赞
踩
夏日炎炎,屋外三十多度的烈日温度,着实一点出门的欲望都无了,小编还是窝在宿舍里当个“肥宅”吧。豆瓣爬虫属于动静结合的数据类型,即列表页动态、详情页静态。对豆瓣高分电影信息进行详细爬取,并存入Excel表格,后续再对数据进行数据分析,简单可视化展示。
操作环境: Windows10、Python3.6、Pycharm、谷歌浏览器
目标网址: https://movie.douban.com/ (豆瓣电影)
相关文章: 拉钩爬虫、腾讯招聘爬虫、新笔趣阁爬虫、链家网爬虫
目标网站:1、点击选电影;2、选择高分电影分类。
随意选择复制一个电影名字段,右键点击选择源码,快捷键Ctrl+F查看数据是否存在。
快速寻找ajax加载的接口链接方法:
1、右键点击检查;
2、选择Network;
3、点击XHR;(一般接口链接处于XHR中)
4、查看Time类型里的最大数值链接
接口链接正确,如图可知rate参数为评分,title为电影名,url为电影详情链接。
json数据中的url为电影详情页链接,提取电影详情页中的电影名、导演、编剧、主演、评分等等。
导入爬虫项目需要的库,并设置全局请求头,以便列表页及详情页的调用请求身份。
# 导入爬虫需要的库
import json
import re
import requests
import openpyxl
import time
# 全局请求头 处理基本反爬
HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}
get请求携带的params参数,定一个get_params函数写params参数的构建, 传入电影分类与页数,以便每次列表页请求的携带调用。
def get_params(tag,pn):
'''
:param tag: 电影分类
:param pn: 页数
:return: 返回请求体
'''
params = {
# 请求体
"type": "movie",
"tag": str(tag),
"sort": "recommend",
"page_limit": "20",
"page_start": str(pn),
}
return params
电影列表页为点击“加载更多”翻页,而不是下拉翻页等。只能自己手动查看“豆瓣高分”这一分类的总页数为 25 ,不能像之前的动态项目那样提取json数据中的总数来while循环翻页。
for pn in range(0,500,20): # 翻页 间隔20
# 获取请求体
params = get_params('豆瓣高分',pn)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。