使用requests爬取猫眼电影TOP100排行榜
网址:https://maoyan.com/board/4
方法:Python3,requests.get()获取网页,正则表达式re.findall匹配目标内容
目标:爬取猫眼电影TOP100排行榜,排名,电影名称,主演,上映时间,评分,并保存至本地文件
如何爬取:打开目标网页,鼠标右键查看网页源代码,发现每个电影信息都是以如下形式表示,每个<dd>***</dd>中间就是一部电影信息,于是用正则表达式对<dd></dd>中间的内容进行匹配,获取目标信息( .*? 替换任意内容,[0-9]+替换任意数字)
编码思路:为爬取目标,大体上可分为三步,登录-爬取-保存
第一步:
# coding=utf-8
import requests
import re, json
from time import ctime #测试用,返回当前时间
# 定义登录函数,判断返回码
def login(url):
req = requests.get(url)
if req.status_code == 200:
return req.content.decode('utf-8')
else:
return None
第二步:
# 获取页面,正则表达式匹配内容
data = []
def page(text):
html = re.findall(
'<i class="board-index board-index-[0-9]+">([0-9]+)</i>.*?<p class="name"><.*?>(.*?)</a></p>.*?<p class="star">(.*?)</p>.*?<p class="releasetime">(.*?)</p>.*?<i class="integer">([0-9\.]+)</i><i class="fraction">([0-9]+)</i></p>',
text, re.S)
#re.S支持换行符;“数字.”中小数点需要转义[0-9\.]+;
for l in html:
datalist = {
'排名': l[0], '电影名称': l[1], '主演': l[2].strip()[3:], '上映时间': l[3].strip()[