利用Python爬虫爬取豆瓣电影数据,获取热门电影排行榜,抓包利器

liftword3个月前 (03-24)技术文章14

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

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

话不多说,先上代码:

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选项卡搜索我们想要爬的数据,
如果搜索到了就不是动态加载数据,如果没有搜索到,那就是动态加载数据


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

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

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

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

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知识!

相关文章

Python爬取小说技术指南

在 Python 中爬取小说需要遵循法律法规和网站的服务条款,请确保你有权获取目标内容。以下是使用 Python 爬取小说的通用技术流程安装依赖库pip install requests beauti...

用Python 爬取并保存小说

1. 安装requests pip install requests2. 安装lxml pip install lxml3. 斗罗大陆网页代码4 import requests from lxml i...

python:最简单爬虫之爬取小说网Hello wrold

以下用最简单的示例来演示爬取某小说网的类目名称。新建一个retest.py,全文代码如下,读者可以复制后直接运行。代码中我尽量添加了一些注释便于理解。需要说明的一点,该小说网站如果后续更新改版了,文中...

python爬取电子课本,送给居家上课的孩子们

在这个全民抗疫的日子,中小学生们也开启了居家上网课的生活。很多没借到书的孩子,不得不在网上看电子课本,有的电子课本是老师发的网络链接,每次打开网页去看,既费流量,也不方便。今天我们就利用python的...

python爬虫教程之爬取当当网 Top 500 本五星好评书籍

我们使用 requests 和 re 来写一个爬虫作为一个爱看书的你(说的跟真的似的)怎么能发现好书呢?所以我们爬取当当网的前 500 本好五星评书籍怎么样?ok接下来就是学习 python 的正确姿...

Python爬虫:用Beautifulsoup爬取html文本数据

Beautifulsoup介绍:是一个高效的网页解析库,可以从HTML或XML文件中提取数据支持不同的解析器,比如,对HTML解析,对XML解析,对HTML5解析就是一个非常强大的工具,爬虫利器一个灵...