3

抓取具有 AJAX/动态加载数据的网页的最佳方法是什么?

例如:抓取一个加载时显示 20 张图像的网页,但当用户向下滚动页面时,它会加载更多图像(有点像 Facebook)。在这种情况下,您如何抓取所有图像,而不仅仅是前 20 个?

4

3 回答 3

2

使用诸如FiddlerWireShark之类的工具来检查加载更多项目时完成的 Web 请求。

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


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

请注意,Wireshark 是一个低级别的网络捕获工具,它提供了大量有关流量的详细信息(正在交换的数据包、DNS 查找等),并且在您只想查看HTTP 请求。

因此,您最好在浏览器中使用 Fiddler 或类似工具(例如:Chrome 的网络检查面板)。

于 2012-12-06T15:29:48.173 回答
2

这是连主要搜索引擎都没有掌握的东西。它被称为“事件驱动爬取”。

谷歌甚至有一个指南来帮助他们更好地抓取你的 ajax 网站

最好的办法是阅读一些开源爬虫,看看他们做了什么。但是你爬到 80% 的机会充其量是微乎其微的,除非你有一个特定的目标。

在crawljax上也有一些有趣的读物

基本上,您应该尝试查找脚本并检查它们是否进行任何 ajax 调用,然后确定它们采用哪种参数并使用递增/递减的参数值进行重复调用。这仅在参数具有逻辑模式(例如数字、单个字母等)时才有效。它还取决于您是针对已知站点还是只是将其发送到野外。如果您知道您的目标,您可以检查它的 DOM 并自定义您的代码以获得更高的准确性,如 wolf 所述。

祝你好运

于 2012-12-06T15:51:35.693 回答
1

Crawljax是开源的,可以动态地抓取基于 Ajax 的内容。

于 2012-12-17T21:20:25.017 回答