【问题标题】:Scrape Goutte and waiting for full loading刮 Goutte 并等待满载
【发布时间】:2018-06-05 18:04:42
【问题描述】:

我尝试通过 Goutte 列表从流行的拍卖网络服务中抓取,但其中的部分代码是由 javascript 呈现的,问题是 Goutte 只返回我没有 JS 作业的 DOM。因此,如果交响乐是无头浏览器,是否可以等待抓取直到呈现完整内容?我检查了phantomjs哪里正常,但是我从来没有在Goute中找到那个能力..

【问题讨论】:

    标签: php symfony scrape goutte


    【解决方案1】:

    您可以使用 symfony/panther (github/packagist),它是一个可以解释 javascript 并且已经支持 Symfony 5 的无头浏览器,此外是官方包!通常你会将它用于测试目的,但我认为你可能会得到你想要的结果。

    你应该用 Panther 替换你的 Goutte

    $client = \Symfony\Component\Panther\Client::createFirefoxClient();
    

    然后告诉你的爬虫等待一个元素出现:

    $crawler = $client->waitFor('#javascript-generated-element');
    

    【讨论】:

      【解决方案2】:

      https://github.com/FriendsOfPHP/Goutte

      Goutte 不解析 Javascript,它不是无头浏览器,它只是下载内容并解析它而不运行 javascript。

      技术信息

      Goutte 是对以下优秀 PHP 库的精简包装:

      Symfony 组件:BrowserKit、CssSelector 和 DomCrawler; Guzzle HTTP 组件。

      【讨论】:

      • 可惜,我认为由于 symphony 是基于 WebKit 构建的,因此它具有与 Phantomjs 类似的功能,但我一直遇到问题
      • 它不是基于 webkit。它完全构建在 php 中,并且没有完整的浏览器来呈现 javascript。如果这回答了你的问题,你能接受这个答案是有效的吗?
      • 我已经在文档中看到了 Symfony 不支持 JS 的描述,但我认为它是关于操作的,例如点击 JS 等。在工作中,我开始怀疑,现在与您的帮助我获得了信心,我不能用 Goutte 做我能做的事情 :-( 可怜,我回到 nodejs,非常感谢你的帮助
      猜你喜欢
      • 2017-10-13
      • 2021-04-13
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      • 2016-06-02
      • 2012-07-07
      相关资源
      最近更新 更多