-
Notifications
You must be signed in to change notification settings - Fork 972
1.5 入门4动态页面_百度百家
desert edited this page May 6, 2018
·
2 revisions
本例子你将学会:动态页面的抓取。
目标地址:
这是典型的瀑布流例子,不论向下翻多少页,浏览器的地址是不会发生变化的。我们可以断定它使用了ajax。
但是,当你直接将url拷贝到Hawk,并使用手气不错时,也是能获取到数据的。这是因为很多网站对第一页和其他页分别作了不同的处理。第一页内容会跟着整体框架一起返回回来。但后面的页的内容就单独返回了。
如果你针对第一页做了大量的XPath开发,却最后发现无法在其他页面使用,多半就是上面提到的问题。每当我遇到这种事情,我会一脸懵逼。因此经验上,建议以其他页面为准。
我们翻到第二页,找一个比较有代表性的关键字:
滴滴一下,马上出发
将其拷贝到网页采集器的搜索字符
里:
Hawk的日志已经提醒如下内容:
2016-10-12 08:41:44 WARN 在该网页中找不到关键字 滴滴一下,马上出发,可能是动态请求,可以启用【自动嗅探】,勾选【转换动态请求】,并将浏览器页面翻到包含该关键字的位置
因此我们勾选转换动态请求
,并点击开始
。
接着,浏览器会弹出百度百家的页面,你可以将滚动条往下翻,直到出现那篇滴滴的文章。之后Hawk会弹出对话框:
此时,Hawk会自动关闭嗅探。之后,再点手气不错,即可看到完整的页面内容,也可以按照关键词搜索,和其他静态网页的使用完全一致。
再打开请求详情
,发现Hawk已经将页面的cookie获取到了。注意到真实的地址:
http://baijia.baidu.com/ajax/labellatestarticle?page=3&pagesize=20&prevarticalid=650790&flagtogether=1&labelid=3
你可以像以往合并多列
的方法,来获取所有页面,此处不再赘述。
提示:当勾选
转换动态请求
时,Hawk会对原始的Json结果转换为等价的html,方便手气不错执行。如果页面包含回调和其他js代码,转换很有可能会失败,此时就不能直接使用手气不错和添加关键字功能了,而是要采用第二种办法。可参考 TODO