用爬虫抓取动态加载数据丨Python爬虫实战系列(6)

本文介绍如何使用Python爬虫抓取动态加载的网站数据,通过分析网站类型、影片详情信息、确定查询参数规律,以及利用正则表达式提取影片类型与类型码。文中提供了一个完整的爬虫程序示例。
摘要由CSDN通过智能技术生成

在这里插入图片描述
提示:最新Python爬虫资料/代码练习>>戳我直达


前言

抓取动态加载数据
在这里插入图片描述在这里插入图片描述
话不多说,开练!

爬虫抓取动态加载数据

确定网站类型

首先要明确网站的类型,即是动态还是静态。检查方法:右键查看网页源码 —> 搜索“辛德勒的名单”关键字,如下图所示:
爬虫抓取动态网站
图1:分析网站类型

最终发现源码页中没有出现想要抓取的数据,只有一大堆的 JS 代码,由此确定该网站为动态网站。

影片详情信息

接下来,使用快捷键 F12 打开控制台进行抓包,点击NetWork选项卡 —>XHR选项 —> Preview选项卡 —> 刷新当前页面抓取数据包,如下图所示:

抓取动态网站数据包
图2:抓取动态网站数据包

从图 2 可知,我们想要抓取的数据取全部包含在当前的数据包中。当我们向下滚动鼠标滑轮时,左侧栏内的数据包会实现自动加载,这是使用Ajax异步加载技术实现的。

通过查看数据 Headers 选项可以明确 url 地址、查询参数等信息,如下所示:

抓取动态加载的数据包
图3:分析Headers信息

从上图可以得知请求的基准 URL (由于还未拼接查询参数,所以称之为基准 URL),如下所示:
在这里插入图片描述
继续滚动鼠标滑轮可知查询参数具有如下规律:

type: 4  # 电影类型
interval_id: 100:90  #代表网页上滑动条的百分比(好于100%-90%的历史片)
action: ''  # 空
start: 0  # 每次加载电影的起始索引值 0 20 40 60
limit: 20 # 每次加载的电影数量,1为初始值,后续加载时20固定不变

注意:寻找规律时,后加载出来的数据包会排在最前面,除去第一个数据包外,其余数据包如下所示:

抓取动态加载的数据
图4:寻找查询参数值的规律

影片总数量

注意:第一个数据包反映了每个类型中电影的总数量,其 url 与响应信息如下:
在这里插入图片描述

影片类型与类型码

影片的类型与类型码包含在电影排行榜的主界面中,如下所示:

爬虫抓取动态加载数据
图5:影片类型与类型码

分析上述页面结构,然后使用正则表达式来提取想要的数据,并定义选择菜单“menu”,代码如下所示:

import re

def get_all_type_films(self):
    # 获取影片类型和类型码
    url = 'https://douban-dy网址/chart'
    headers = self.get_headers()
    html = requests.get(url=url, headers=headers).text
    re_bds = r'<a href=.*?type_name=(.*?)&type=(.*?)&.*?</a>'
    pattern = re.compile(re_bds, re.S)
    r_list = pattern.findall(
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值