没有页号而是动态加载的列表页怎么采集?

作者: 水淼 日期: 2020-06-22 21:32:19 人气: - 标签: 抓包 教程

本教程为进阶教程,普通用户请看隐藏列表页(栏目页)抓包分析教程

抓包工具:

抓包可选傲游浏览器或其他谷歌内核浏览器或任何抓包工具。
抓包时注意,在网页上鼠标右键-审查-网络(Network)才能进入抓包界面:

网页的访问方法(Method):有GET和POST两种,GET就是【一条网址】,而POST是【一条网址+投递参数】,一般都是GET方法,但是如果抓包列表页地址时碰到POST方法(比如百度百科)就需要特殊处理下才能使用到软件上进行采集

抓包过程:

今日头条为例,使用水淼万能文章采集器等多款软件辅助

1、开始抓包:

当下拉滚动条到底部时,该网页就会刷新出新的新闻列表,通常抓包会抓到很多地址,可以通过响应正文(Response)是否包含目标内容(如列表页中的文章标题、文章地址)、响应内容的大小(一般注意大尺寸)来判断哪个才是新闻列表的刷新读取地址(后面简称刷新地址)。
我这里抓包到的刷新地址是:http://toutiao.com/api/article/recent/?...

复制刷新地址的方法

可以右键单击抓包列表中的刷新地址弹出菜单-Copy Link Address
或者左键单击刷新地址Headers-General-Request URL-选中地址-右键菜单-复制

然后继续抓下一个的刷新地址:http://toutiao.com/api/article/recent/?...
使用水淼文章组合工具集比对-网址参数比对比较这2个刷新地址,可以发现有3个参数产生了变化。

2、分析抓包数据:

在抓包时可以发现新闻列表的响应正文是JSON数据,因此使用水淼Json解析助手来分析这3个参数是怎么来的:

复制响应正文的方法

可以右键单击抓包列表中的刷新地址弹出菜单-CopyResponse
或者左键单击刷新地址Response-右键菜单-全选-复制

可以看到,Json数据中的 next.max_behot_time 节点的值构成了刷新地址中的第一个 max_behot_time 参数

而Json数据中的 data.[15].create_time 节点(也就是新闻列表中的最后一个即序号为15的项目的 create_time)的值构成了刷新地址中的第二个 max_create_time 参数

而第三个 _ 参数我们可以使用一个动态时间戳(实际上这个参数没什么作用,可以保留抓包时的原值,也可以使用一个动态值)。

结果构建出来的模板刷新地址:http://toutiao.com/api/article/recent/?source=2&count=15&category=__all__&max_behot_time=[#next.max_behot_time#]&utm_source=toutiao&offset=0&max_create_time=[#data.[15].create_time#]&_={#毫秒时间戳#}

然后发现这个今日头条还要求提供Cookies,否则抓取到的新闻列表就不准确,因此在抓包时可以到请求里复制出Cookies:uuid="w:2336ce5e12794f1c9d90ea07c2d4dc47"; tt_webid=19421740959; csrftoken=19f08b2051f0abbb85ee449e648fb3ad; CNZZDATA1258609184=1681606143-1466332000-%7C1466337400; _ga=GA1.2.451981020.1466332236; utm_source=toutiao

3、最后采集列表页:

采集好列表页后,在万能文章采集器的【采集文章URL列表】对这些列表页采集出文章地址列表时,请保持【采集列表页URL(动态加载)】窗口处于打开状态,这样才能调用该窗口中的Cookies设置,因为今日头条刷新新闻列表时要求Cookies。

下面是采集文章地址的设置:

Copyright © 2009-2023 水淼软件技术 Inc. 保留所有权利。粤ICP备16013086号 粤ICP备16013086号-1 转载侵权联系删除