python爬取豆瓣影评,利用Python爬虫爬取豆瓣电影数据

动态加载数据的捕获(爬取豆瓣电影数据)

现在我打算爬取这个页面:

python爬取豆瓣影评,利用Python爬虫爬取豆瓣电影数据(1)

话不多说,先上代码:

import requests # 爬取豆瓣电影中的动作片详情数据 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36' } url = 'movie.douban/typerank?type_name=动作&type=5&interval_id=100:90&action=' response = requests.get(url, headers=headers) page_text = response.text with open('./douban.html', 'w', encoding='utf-8') as f: f.write(page_text)

代码运行后,打开 douban.html:

python爬取豆瓣影评,利用Python爬虫爬取豆瓣电影数据(2)

我们发现,程序并没有爬取到相关数据。这是为什么呢?

动态加载数据的捕获
  • 什么叫做动态加载的数据?

我们通过requests模块进行爬取数据无法每次都实现可见即可得,有些数据是通过非浏览器地址栏中的url请求到的数据,而是其他请求 请求到的数据,那么这些通过请求请求到的数据就是动态加载的数据

  • 如何检测网页中是否存在动态加载数据

基于抓包工具动态进行局部搜索:

在当前网页中打开抓包工具,捕获到地址栏url对应的数据包,在该数据包中response选项卡搜索我们想要爬的数据,如果搜索到了就不是动态加载数据,如果没有搜索到,那就是动态加载数据

python爬取豆瓣影评,利用Python爬虫爬取豆瓣电影数据(3)


如果数据为动态加载,那么我们如何铺货到动态加载的数据

基于抓包工具进行全局搜索

  • 定位到动态加载数据对应的数据包,从该数据包中就可以提取出
  1. 请求的url
  2. 请求方式
  3. 请求携带的参数
  4. 看到响应的数据

python爬取豆瓣影评,利用Python爬虫爬取豆瓣电影数据(4)

python爬取豆瓣影评,利用Python爬虫爬取豆瓣电影数据(5)

现在我们就可以写代码进行爬取了:

url = 'movie.douban/j/chart/top_list' params = { 'type': '5', 'interval_id': '100:90', 'action': '', 'start': '0', 'limit': '20' } response = requests.get(url=url, params=params, headers=headers) # .json() 将获取的字符串形式的json数据反序列化成字典或列表对象 page_text = response.json() print(page_text) # 解析出电影的名称 评分 for movie in page_text: name = movie['title'] score = movie['score'] print(name, score)

思考:

基于抓包工具进行全局搜索不一定每次都能定位到动态加载数据对应的数据包?

原因:如果动态加载的数据是经过加密的密文数据。(后续会详解)

关注 Python涛哥,学习更多Python知识!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页