抓取具有 AJAX/动态加载数据的网页的最佳方法是什么?
例如:抓取一个加载时显示 20 张图像的网页,但当用户向下滚动页面时,它会加载更多图像(有点像 Facebook)。在这种情况下,您如何抓取所有图像,而不仅仅是前 20 个?
抓取具有 AJAX/动态加载数据的网页的最佳方法是什么?
例如:抓取一个加载时显示 20 张图像的网页,但当用户向下滚动页面时,它会加载更多图像(有点像 Facebook)。在这种情况下,您如何抓取所有图像,而不仅仅是前 20 个?
使用诸如Fiddler或WireShark之类的工具来检查加载更多项目时完成的 Web 请求。
然后在您的代码中复制请求。
更新(感谢pguardiario ofr他的评论):
请注意,Wireshark 是一个低级别的网络捕获工具,它提供了大量有关流量的详细信息(正在交换的数据包、DNS 查找等),并且在您只想查看HTTP 请求。
因此,您最好在浏览器中使用 Fiddler 或类似工具(例如:Chrome 的网络检查面板)。
这是连主要搜索引擎都没有掌握的东西。它被称为“事件驱动爬取”。
谷歌甚至有一个指南来帮助他们更好地抓取你的 ajax 网站
最好的办法是阅读一些开源爬虫,看看他们做了什么。但是你爬到 80% 的机会充其量是微乎其微的,除非你有一个特定的目标。
在crawljax上也有一些有趣的读物
基本上,您应该尝试查找脚本并检查它们是否进行任何 ajax 调用,然后确定它们采用哪种参数并使用递增/递减的参数值进行重复调用。这仅在参数具有逻辑模式(例如数字、单个字母等)时才有效。它还取决于您是针对已知站点还是只是将其发送到野外。如果您知道您的目标,您可以检查它的 DOM 并自定义您的代码以获得更高的准确性,如 wolf 所述。
祝你好运
Crawljax是开源的,可以动态地抓取基于 Ajax 的内容。