【问题标题】:Web scraper that handles JavaScript [duplicate]处理 JavaScript 的网络爬虫 [重复]
【发布时间】:2012-09-13 21:03:45
【问题描述】:

可能重复:
Make a JavaScript-aware Crawler

我正在尝试找出将什么用作基于 PHP 的网络爬虫的基础,该爬虫可以处理使用 JavaScript 呈现的页面。除非执行这些页面中的 JS,否则许多网站抓取尝试(至少是我处理的那些)现在都失败了。这些页面不是为了优雅地回退到无脚本实现而构建的。这包括那些大量使用 AJAX 的。

有没有人建议从哪里开始开发可以处理现代且严重依赖 JavaScript 的网页的网络爬虫?

能被 PHP 使用的东西最好。

【问题讨论】:

  • 你在抓取什么页面?什么内容?
  • 你不能用 PHP 抓取一个 JS 页面
  • @Dragon 很多不同的页面,有很多不同的内容。没有 JS,有些网站根本无法运行。抱歉听起来含糊不清。其中一些是客户的私人工作。
  • @Paul 我正在寻找一个可以获取页面的选项,在该页面的代码中呈现 JS 所需的任何内容,然后将内容提供给 PHP 脚本来处理其余部分。或类似的东西。试图锻炼我的选择。构建一个作为 Firefox 插件工作的 JS 刮板的想法已经浮现在脑海中,但我觉得应该有一个更优雅的解决方案。
  • 非常感谢您的好评,没有免费的帮助!

标签: php javascript web-scraping


【解决方案1】:

可以在无头模式下使用网络浏览器引擎来加载页面并分析 DOM。一些谷歌搜索将我指向http://phantomjs.org/

【讨论】:

  • 这可能会很好地使用pjscrape 和 PHP url 来调用使用 jQuery 将抓取的结果处理到数据库。
【解决方案2】:

那些使用大量 ajax 的网站,只需调用与页面相同的 url,并在该响应上构建您的网站内容,而不是请求页面。

那些具有大量 document.write 或等效框架的网站,您可能只需使用简单的正则表达式剥离空间或匹配标签或相关内容,然后再次请求负责的脚本而不是请求它的页面...

【讨论】:

    【解决方案3】:

    您可以使用 Selenium 这是一个浏览器自动化工具,然后使用 PHP 绑定 here、here、or here 之一,这样您就可以从 PHP 自动化 Selenium。

    【讨论】:

    • Selenium 看起来非常有用。对于我想到的其他一些应用程序可能会很有帮助。谢谢!
    【解决方案4】:

    您必须在 PHP 中有一个 JavaScript 引擎。或者命令行上的一些无头 Webkit。即便如此,它也会变得非常复杂。所以简短的回答是:不,对不起,你不能那样做。

    【讨论】:

      【解决方案5】:

      PHP 支持 V8 引擎,所以我想您可以将 javascript 传递给 V8。不过,这不是一件漂亮的事情,我会使用其他东西而不是直接 PHP 来做到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-03
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多