Skip to content

1.5 入门4动态页面_百度百家

desert edited this page May 6, 2018 · 2 revisions

本例子你将学会:动态页面的抓取。

百度百家新闻

目标地址:

http://baijia.baidu.com/

这是典型的瀑布流例子,不论向下翻多少页,浏览器的地址是不会发生变化的。我们可以断定它使用了ajax。

但是,当你直接将url拷贝到Hawk,并使用手气不错时,也是能获取到数据的。这是因为很多网站对第一页和其他页分别作了不同的处理。第一页内容会跟着整体框架一起返回回来。但后面的页的内容就单独返回了。

如果你针对第一页做了大量的XPath开发,却最后发现无法在其他页面使用,多半就是上面提到的问题。每当我遇到这种事情,我会一脸懵逼。因此经验上,建议以其他页面为准。

我们翻到第二页,找一个比较有代表性的关键字:

image_1aur5boeu1tqmo9d163rs07gu79.png-132.2kB

滴滴一下,马上出发

将其拷贝到网页采集器的搜索字符里:

image_1aur5gl4urkcur7dd1oaq1rjg9.png-9.6kB

Hawk的日志已经提醒如下内容:

2016-10-12 08:41:44 WARN  在该网页中找不到关键字 滴滴一下,马上出发,可能是动态请求,可以启用【自动嗅探】,勾选【转换动态请求】,并将浏览器页面翻到包含该关键字的位置 

因此我们勾选转换动态请求,并点击开始

image_1aur5ig9kum6spv3b9ei1h0im.png-10.4kB

接着,浏览器会弹出百度百家的页面,你可以将滚动条往下翻,直到出现那篇滴滴的文章。之后Hawk会弹出对话框:

image_1aur5lad8mhr1pts1fjape1jc613.png-20.2kB

此时,Hawk会自动关闭嗅探。之后,再点手气不错,即可看到完整的页面内容,也可以按照关键词搜索,和其他静态网页的使用完全一致。

再打开请求详情,发现Hawk已经将页面的cookie获取到了。注意到真实的地址:

http://baijia.baidu.com/ajax/labellatestarticle?page=3&pagesize=20&prevarticalid=650790&flagtogether=1&labelid=3

你可以像以往合并多列的方法,来获取所有页面,此处不再赘述。

提示:当勾选转换动态请求时,Hawk会对原始的Json结果转换为等价的html,方便手气不错执行。如果页面包含回调和其他js代码,转换很有可能会失败,此时就不能直接使用手气不错和添加关键字功能了,而是要采用第二种办法。可参考 TODO