本帖最后由 l2430478 于 2021-1-23 23:56 编辑
上次发的豆瓣是学习人家的代码 但是自己一知半解 ,这次自己写代码进行爬取。
感觉简单了很多。
豆瓣和搜狗爬虫是不同的,豆瓣虽然也是GET类请求,但是是动态的。
我们通过requests模块进行数据爬取无法每次都实现可见即可得。有些数据是通过非浏览器地址栏中的url请求到的数据,而是其他请求请求到的数据,那么这些通过其他请求请求到的数据就是动态加载的数据。
那什么叫做动态加载的数据?或者如何判断呢?
直接打开豆瓣 点排行榜 点动作片
网址如下:https://movie.douban.com/typeran ... l_id=100:90&action=
抓包找不到主页对应电影的信息,我们点到Response,以杀手不太冷为例,点搜索,结果找不到对应的信息,这就说明是动态加载。
我们点到Headers 再次按ctrl+f 进行搜索 将会出现全局搜索菜单 我们输入杀手不太冷 回车会发现搜到了新的页面。
我们会发现里面有我们需要的信息,但这信息乱七八糟,复制信息到https://www.sojson.com/ 点粘贴 点校验格式化
我们可以看到这是一段字典形式的字符
那么我们就写代码进行提取,先做准备工作如下:
还在黄字那个页面,点到Headers,向下拉,找到Query String Parameters
写成字典如下:
[Python] 纯文本查看 复制代码
params = {
'type': '5',
'interval_id': '100:90',
'action':'',
'start': '0',
'limit': '20',
}
我们把黄色字那个网页路径复制出来,由于使用了params,那么就可以删除?后所有字符。
url ="https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=0&limit=20"
url = "https://movie.douban.com/j/chart/top_list"
最终结果如下:
[Python] 纯文本查看 复制代码 #爬取豆瓣
import requests
# url ="https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=0&limit=20"
url = "https://movie.douban.com/j/chart/top_list"
#取headers中 Query String Parameters 数据
#'start': '10', 'limit': '200' 这数据可以进行修改 调整多少页 不用再翻页爬取了。
params = {
'type': '5',
'interval_id': '100:90',
'action':'',
'start': '0',
'limit': '20',
}
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
response = requests.get(url=url,params=params,headers= headers)
# response.encoding ='utf-8'
#3,获取响应数据
#.text∶返回的是字符串形式的响应数据
#page_text =response.text
#由于是字符串,所以需要使用.json( )将获取的字符串形式的json数据序列化成字典或者列表对象
page_text = response.json()
#利用for 循环函数将数据提取出来,根据解码网址上的数据,我们可以看到”title'是电影名 'score'是评分。。。。。。。 那么你想要什么数据就提取吧
for movie in page_text:
name = movie['title']
score =movie['score']
print (name ,score)
有兴趣的,可以根据教程 将数据保存下来。 |