抓取具有AJAX/动态数据加载功能的网页的最佳方式是什么?
例如:抓取一个网页,该网页加载了20张图片,但当用户向下滚动页面时,它会加载更多的图片(有点像Facebook)。在这种情况下,如何抓取所有图像,而不仅仅是前20个图像?
发布于 2012-12-06 23:29:48
使用Fiddler或WireShark等工具检查加载更多项目时执行的web请求。
然后在您的代码中复制请求。
更新(感谢 或他的评论):
请注意,Wireshark是一个低级网络捕获工具,它提供了有关通信量(正在交换的数据包、DNS查找等)的大量细节,在这样的场景中使用可能很麻烦,因为您只希望看到HTTP请求。
因此,你最好在浏览器中使用Fiddler或类似的工具(例如:Chrome的网络检查面板)。
发布于 2012-12-06 23:51:36
这是连主流搜索引擎都还没有掌握的东西。它被称为"event-driven crawling“。
谷歌甚至有一个关于如何处理help them crawl your ajax sites better的指南
最好的办法是阅读一些open source crawlers,看看他们做了什么。但是,除非你有一个明确的目标,否则你爬行80%的机会充其量也是微乎其微的。
在crawljax上也有一些有趣的读物
基本上,您应该尝试查找脚本并检查它们是否进行任何ajax调用,然后确定它们采用哪种类型的参数,并使用递增/递减的参数值进行重复调用。这只在参数具有逻辑模式时才起作用,例如数字、单个字母等。它还取决于您是针对已知的站点还是只是将其发送到野外。如果你知道你的目标,你可以检查它的DOM并定制你的代码以提高准确性,就像wolf提到的那样。
祝好运
发布于 2012-12-18 05:20:25
Crawljax是开源的,可以动态抓取基于Ajax的内容。
https://stackoverflow.com/questions/13746882
复制相似问题