概述
- 在挖掘网站数据时,有时会遇到网页代码爬取下来,但没有所需信息、所需信息需要点击按钮出现、点击“下一页”但网页链接不变而导致不能爬取数据或者只能够爬取第一页数据的情况。
- 此时有两种较为简单的解决方法,一是使用Selenium进行模拟操作、二是对数据来源进行分析。
- 因为点击换页按钮加载数据,一定会对后台进行数据请求,故一定会有对某一个链接进行请求。
实例
- 以京东商城某3090显卡商品页面为例,点击此商品页面后其链接为https://item.jd.com/100016672406.html;
- 点击商品评价按钮会加载评论,但链接不变;
- 拉到下面点击下一页会出现第二页评论内容,观察网址栏,其中的网址变为https://item.jd.com/100016672406.html#comment;
- 之后再点击下一页等翻页操作,并不会改变网页链接,查看翻页按钮的a标签,也并没有具体的链接。
- 网页链接并没有变化,而评论数据进行了异步加载,故后台应有对隐藏链接的请求;
- 按F12打开检查面板并清空内容,点击面板上方的network项,点击评论的第二页,观察请求数据;
- 观察上图中的请求数据,数据类型仅三种:gif、script、jpeg,图片类数据并没有作用,猜测JS对评论数据进行了请求,点击查看箭头所指的script文件,按照下图红箭头所指可找到评论数据。
- 点击Headers,可找到请求评论的链接https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100016672406&score=0&sortType=5&page=1&pageSize=10&isShadowSku=0&rid=0&fold=1,其中page与pageSize参数控制评论页号与每页加载评论条数(≤10)。此时通过改变page的值即可获取各页的评论。
总结
- 本章为简单的暗链寻找与挖掘思路,遇到看似异步加载问题,可先通过检查寻找是否有直接请求的链接,从而避免使用速度较慢的Selenium。
- 学如逆水行舟,不进则退!
- (? ??-??)?
|