分享好友 最新资讯首页 最新资讯分类 切换频道
Python爬虫爬取动态网页
2024-12-28 19:24

系统环境

Background:

对于静态网页,我们只需要把网页地址栏中的url传到get请求中就可以轻松地获取到网页的数据。但是,我们经常会遇到直接把网页地址栏中的url传到get请求中无法直接获取到网页的数据的情况,而且右键查看网页源代码也无法看到网页的数据,同时点击第二页、第三页等进行翻页的时候,网页地址栏中的url也没变,这些就是动态网页,例如:http://www.neeq.com.cn/disclosure/supervise.html 。

解决办法

对于动态网页抓取的关键是先分析网页数据获取和跳转的逻辑,再去写代码。接下来,将以上面的那个网页为例,介绍如何利用Python来爬取动态网页的数据。

1、分析网页数据请求和跳转的逻辑

如上图所示,我们打开网页之后,按“F12”进入chrome浏览器的开发工具,点击“Network”->XHR(有时候是JS,然后我们点击上面的页面跳转栏的“2”跳转到第二页,然后我们可以看到开发工具左边的框里出现了一个新的请求,即左下图的最下面那一行(蓝色那条,我们用鼠标点击它,就可以在右边显示出该请求的headers的相关信息。在Headers中我们可以知道:Requests URL就是该网页真正请求的URL,而且由Request Method可以知道这是一个post请求,而下面的Request Headers就是该请求所需要设置的headers参数。因为这是一个post请求,所以我们要查看一下post请求提交了那些数据,所以我们可以在右边的Headers中继续往下拉来查看。

所以由上图的Form Data我们可以知道,post请求上传了两个关键的数据:disclosureType和page,到此我们就成功地分析了该动态网页数据请求和跳转的逻辑,接下来通过编程来实现爬取该网页的数据。

2、Coding:

运行结果如下

我们可以看到返回的数据req.content为json格式的数据,但是json数据的前面和后面分别是"jQuery18307528463705200819_1525173495230(["和"])",所以我们要去掉这两部分,留下中间的json格式的数据。在此之前,我们可以发现“jQuery18307528463705200819_1525173495230”就是我们的url参数“callback”的值,所以为了去掉jQuery后面的一大串数字,我们可以把“callback”的值改成“jQuery”(当然你也可以改成其他的值,所以url变为'http://www.neeq.com.cn/disclosureInfoController/infoResult.do?callback=jQuery',在此运行代码,可以得到

而且我们发现req.content是一个字符串类型的数据,所以我们可以用

来获取我们需要的中间的那部分json数据,此时代码如下

运行结果如下

我们把str_json打印出来的字符串复制粘贴到网上的json在线解析工具来分析该数据的规律,结果如下

由右图,我们可以发现json数据的规律。接下来,我们先把str_json转成dict字典类型的数据

然后就可以通过字典数据的相关操作来获取网页的相关数据了。

完整代码如下

注意事项

最新文章
泛微·数智大脑Xiaoe.AI发布,现场爆棚,1600余位新老客户参与体验数智化运营场景
12月5日,泛微·数智大脑Xiaoe.AI体验大会在上海举办,泛微·数智大脑Xiaoe.AI正式发布。1600余位新老客户现场体验了由数智大脑X
置顶从0到1上线一个微信小程序精选热门
微信小程序的出现极大地降低了个人开发者微创业的门槛,不需要后端技术,不需要服务器和域名这些乱七八糟的前置操作,只需要懂得
WordPress 限制不同用户角色可上传的文件类型及大小
开放注册的WordPress站点,一般都会根据不同等级的用户角色来赋予不同的权限。文件上传功能就是一个比较常用的功能,那么,如何
【HiQQIS语音下载】华为HiQQIS语音4.2.1.12063免费下载
IS语音-互动视频直播,满足你对新鲜的渴望。释放个性全民直播,实时直播聊天交友,随时随地分享视频!---红人主播---997琪琪:确
【徵羽摩柯AI原创曲】寄予你的歌【2024官方生贺曲】
【徵羽摩柯AI原创曲】寄予你的歌【2024官方生贺曲】 作曲:盖盖Nyan作词:瞳荧编曲:盖盖Nyan调校:一只大水母p弦乐:PlatixZha
阿里巴巴国际站发布类目调整通知
为了优化商品结构,提升买家体验,阿里巴巴国际站将于2019年5月5日起对发布类目进行调整,预计两周内调整完毕,详情如下: 一、
电商页面的装修法则,全胜姿态备战12.12!
近几年电商平台在东南亚市场快速崛起,大促活动也逐渐融入了本地文化特色和折扣方式。作为与11.11齐名的电商节日,12.12在东南亚
关系图表 python
在数据分析和可视化过程中,Python 作为一种强大的编程语言,提供了众多工具和库来帮助我们进行数据的可视化。图表是分析数据的
蓝天采集器开发自定义插件
免费简单好用的简数采集器Typecho采集发布插件接口:1. 支持将采集的数据发送到Typecho 1.1.0版本和Typecho 1.2.0版本;2. Typec
用AI生成美丽写真,探索超逼真美女照片的制作技巧和工具
Artbreeder这是一个极具创意色彩的平台,允许用户通过不同的风格与图像进行组合作成全新作品。Artbreeder的优势在于其高度的可定