【问题标题】:HTML Page ScrapingHTML 页面抓取
【发布时间】:2012-11-24 16:11:46
【问题描述】:

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

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

【问题讨论】:

    标签: c# html ajax screen-scraping


    【解决方案1】:

    这是连主要搜索引擎都没有掌握的东西。它叫做“event-driven crawling”。

    Google 甚至提供了如何处理 help them crawl your ajax sites better 的指南

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

    crawljax也有一些有趣的读物

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

    祝你好运

    【讨论】:

      【解决方案2】:

      使用FiddlerWireShark 等工具检查加载更多项目时完成的网络请求。

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


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

      请注意,Wireshark 是一种低级网络捕获工具,它提供有关流量的大量详细信息(正在交换的数据包、DNS 查找等),并且在您只希望在这种情况下使用可能会很痛苦查看 HTTP 请求。

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

      【讨论】:

      • 提琴手是的,但wireshark会很痛苦。 Chrome 的网络检查面板将完成这项工作。
      • @pguardiario 是的,这也是一个很棒的工具
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2015-04-05
        • 1970-01-01
        • 2018-03-20
        • 2011-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多