python爬虫如何获取网页信息时,发现所需要的信息是动态生成的,然后抓包获取到信息来源的URL?

转自 :https://www.wukong.com/answer/6551337387799085316/?iid=43974241203&app=news_article&share_ansid=6551337387799085316&app_id=13&tt_from=mobile_qq&utm_source=mobile_qq&utm_medium=toutiao_ios&utm_campaign=client_share

 

如果在利用爬虫爬取网页数据的时候,发现是动态生成的时候,目前来看主要表现在以下几种:

以接口的形式生成数据,这种形式其实挺好处理的,比较典型的是知乎的用户信息,我们只要知道接口的URL,就可以不用再考虑页面本身的内容

以知乎为例,我们在爬取用户信息的时候,可能一开始的时候关注页面本身的内容,希望通过解析页面的结构来获取想要的数据,实际上我们利用fiddler这样的网络工具,很容易地发现这里面其实有一个用户信息的接口在里面,这样的话我们爬取用户的时候只需要关注此接口的逻辑就可以了。

如上图所示,上面的接口将用户的信息都返回过来,所以我们通过处理该结果的json格式数据就可以了。

动态生成的内容直接写入到网页中,这个时候需要渲染引擎来帮助我们将javascript的执行结果渲染出来,splash正是我们需要的引擎,能够方便快捷地帮助我们将javascript的内容渲染出来

splash是scrapy官方推荐使用的渲染引擎,能够实现并发渲染多个页面、为用户返回页面或者页面截图、在页面中执行自定义的javascript代码等。以京东的图书搜索为例,搜索list中的内容是通过javascript动态生成,我们要爬取其中的内容,就需要将数据渲染出来,利用splash可以很方便地做到这一点。下图是利用splash渲染的代码

总之,针对不同的形态,我们需要先了解清楚相应的实现原理,然后根据实现原理采取相应的方案来爬取我们需要的数据。

 

你想通过python代码来判断数据是不是动态生成的,这个目前来说,不好实现,至于利用python进行抓包分析,获取数据的Request URL,这个实现起来复杂,而且没有必要,手动F12很快就能发现答案,数据是不是动态的,一目了然。静态的数据在网页源码中,动态数据不在网页源码中,对比网页显示内容和网页源码,很直观就发现了。

1.静态数据如下。

网页显示内容:

网页源码内容:

能在网页源码中找到对应的数据,则不是动态加载的。

2.动态数据如下。

网页显示内容:

而实际数据如图,不在网页源码中,动态加载数据:

至于动态数据URL的话,你可以直接抓包分析就行,实现起来很简单:

一般情况下,数据页面的URL参数都是有规矩可循的,一页一页的翻转,参数也是固定那几个参数,值的话,会按规律以此递增变化,但是有些网站会进行加密,这个你就要自己好好分析了。普通情况下,动态数据都是个json文件,通过json包或正则表达式都可以完成数据的提取,希望以上内容对你有所帮助吧。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值