python爬取貓眼電影排名
本次爬蟲主要使用requests庫爬取和正則表達式re解析,下面進行簡要分析
1、項目流程
1、獲取貓眼電影排行榜一頁的頁面信息,通過requests.get獲得
2、使用正則表達式解析一個頁面的頁面信息,獲得需要內容
3、通過生成器爬取多個頁面內容,輸出
4、將所得到內容存入字典中,輸出
5、將所得到信息存儲到MongoDB數據庫中
2、項目結果
3、項目代碼
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#作者:nuancolor
#網址:暫無
import requests
from requests.exceptions import RequestException
import re
import pymongo
# 配置數據庫信息
MONGO_HOST = "127.0.0.1" # 主機IP
MONGO_URl = 'localhost'
MONGO_DB = 'test' # 數據庫名
MONGO_TABLE = 'movies' # 表名
# 連接數據庫
client = pymongo.MongoClient(MONGO_URl)
db = client[MONGO_DB]
# 存入數據庫
def save_url_to_Mongo(result):
try:
if db[MONGO_TABLE].insert_one(result):
print('存儲到MongoDB成功', result)
except Exception:
print('存儲到MongoDb失敗', result)
# 獲取
def get_one_page(url):
try:
response = requests.get(url)
if response.status_code == 200:
return response.text
return None
except RequestException:
return None
# 解析
def parse_one_page(html):
pattern = re.compile('
.*?board-index.*?>(\d+).*?
'
+ '
(.*?)
.*?star">(.*?)
'
+ '.*?>(.*?)
.*?integer">(.*?)'
+ '.*?fraction">(.*?).*?
', re.S)
items = re.findall(pattern, html)
# 以字典的形式存儲起來
headurl = 'https://maoyan.com'
for item in items:
yield {
'index': item[0],
'url': headurl + item[1],
'title': item[2],
'actor': item[3].strip()[3:],
'time': item[4].strip()[5:],
'score': item[5] + item[6]
}
def main(offset):
url = 'https://maoyan.com/board/4?offset=' + str(offset)
html = get_one_page(url)
for item in parse_one_page(html):
print(item)
result = item
save_url_to_Mongo(result)
if __name__ == '__main__':
for i in range(3):
main(i * 10)
4、遇到的問題及解決
1、進行頁面解析是書寫正則表達式一定要規范,不然會出現報錯或解析內容為空列表
2、爬取電影的url發現頁面只爬取到網頁鏈接的后半部分,在進行數據處理是進行相應補充即可
3、連接pymongo是報錯,沒有發現該庫,我使用的是spyder運行項目,換pycharm部署之后成功。
小結
本次項目主要是對requests庫和re庫的一個熟練使用,途中出現的問題等都加深了對爬蟲處理的理解與應用。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
