目标网址:http://www.maoyan.com/board/4
Top100榜单共分为10页,经过观察,每一页的URL区别为:get请求参数 offset 变化。
所以URL如下设置:
url = 'http://www.maoyan.com/board/4?offset=' + str(page_num)
获取单页的html的代码写为一个函数:
# 获取单页的html
def get_one_page(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36'
}
# requests.get(url,headers) 头这样设置无法返回结果,相当于没有加请求头
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
return None
我们抓取的内容为6个:排行序号、图片地址、电影名、演员、上映时间(国家)、得分
经过观察,每一个电影的信息在html中的一个<dd></dd>标签中,如下图:
使用正则表达式,对我们所需信息的解析函数如下:
# 进行单页的解析,返回单页中我们需要的全部信息
def parse_one_page(html):
# 提取排名数 <dd>.*?board-index.*?>(.*?)</i>
# 提取图片 data-src="(.*?)"
# 提取电影名 <p.*?name.*?a.*?>