Python爬虫从入门到精通:(3)requests基础02_动态加载数据的捕获(爬取豆瓣电影数据)_Python涛哥

45 篇文章 18 订阅

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

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

在这里插入图片描述

话不多说,先上代码:

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 = 'https://movie.douban.com/typerank?type_name=%E5%8A%A8%E4%BD%9C&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:

在这里插入图片描述

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

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

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

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

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

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

在这里插入图片描述


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

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

  • 定位到动态加载数据对应的数据包,从该数据包中就可以提取出

    • 请求的url

    • 请求方式

    • 请求携带的参数

    • 看到响应数据

      在这里插入图片描述

    在这里插入图片描述

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

url = 'https://movie.douban.com/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知识!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值