2012-12-06 110 views
3

什么是最好的方式来抓取具有AJAX /动态加载数据的网页?HTML页面抓取

例如:抓取加载时呈现20张图片的网页,但当用户向下滚动页面时,它会加载更多图片(有点像Facebook)。在这种情况下,你怎么刮所有的图像,不只是前20?

回答

2

使用这样的工具,FiddlerWireShark检查正在加载更多项目时所做的web请求。

然后在您的代码中复制请求。


更新(感谢pguardiario OFR他的评论):

注意,Wireshark是一个低级别的网络捕获工具,提供详细的大量关于业务(数据包进行交换,DNS lookps等等),并且在这种情况下可能会很痛苦,因为您只希望看到HTTP请求。因此,您最好使用Fiddler或浏览器中的类似工具(例如:Chrome的网络检查面板)。

+1

提琴手是的,但wireshark会是一种痛苦。 Chrome的网络检查面板将完成这项工作。 – pguardiario

+0

@pguardiario是的,这也是一个很好的工具 – GolfWolf

2

这是甚至没有主要的搜索引擎已经掌握了。它被称为“event-driven crawling”。

谷歌甚至对如何做才能help them crawl your ajax sites better

最好的办法是阅读一些open source crawlers,看看他们做什么的指南。但是,除非你有一个特定的目标,否则爬满80%的机会渺茫。

也有一些有趣的crawljax

读取基本上,你应该尝试寻找脚本和检查,如果他们做任何Ajax调用,然后确定他们采取什么样的参数,并与递增/递减参数重复呼叫值。这仅适用于参数是否具有逻辑模式(如数字,单个字母等)的情况。这还取决于您是针对已知网站还是将其发送到野外。如果你知道你的目标,你可以检查它的DOM,并按照狼提到的那样定制你的代码以获得更高的准确性。

好运