【问题标题】:Wait for the JS to be executed before scraping the page等待JS执行完毕再抓取页面
【发布时间】:2018-03-26 15:23:15
【问题描述】:

我正在尝试使用hQuery 抓取以下页面:http://www.oddsportal.com/search/Paris+SG/soccer/

我一半意识到每场比赛的赔率都是使用 JS 计算的(之前,它只是 -)。 javascript执行后有什么方法可以获取页面还是我应该找到另一个网站??

【问题讨论】:

  • hQuery 不是浏览器,它只会下载 HTML 页面,不会执行任何 javascript 代码。您需要找到一种不同的方式来获取由 javascript 生成/加载的任何信息。
  • @rickdenhaan 有没有办法在使用 PHP 中的任何其他工具执行 JS 后检索 html?然后我就可以通过 hQuery 处理它。否则我想我会找到另一个网站。
  • 不是我所知道的,虽然这并没有说太多 ;-) 但是看看那个网站,当前的赔率似乎来自一个活跃的 websocket,它每隔几秒就会更新一次值.如果您可以使用 PHP 从您的服务器连接到该套接字,您可能能够检索数据。
  • 但是,根据您想要对数据进行的处理,您可能违反了他们的Terms of Use(在知识产权下):“未经提供商事先书面授权,访问者无权复制、修改、篡改、分发、传输、显示、复制、传输、上传、下载或以其他方式使用或更改本网站的任何内容。"

标签: javascript php


【解决方案1】:

我的猜测是,您将不得不使用另一个浏览器(不是 hQuery)并查看代码,看看是否有任何事件发出,您可以赶上。

【讨论】:

    【解决方案2】:

    你不能使用 PHP

    抓取站点会为您提供服务器对您发出的 HTTP 请求的响应(如果该内容是 HTML,则从该请求导出 DOM 树的“初始”状态)。它不能考虑 DOM 在被 Javascript 修改后的“当前”状态。

    您可以使用其他强大的工具,例如 selenium

    【讨论】:

      【解决方案3】:

      您需要PhantomJs PHP 包装器,因为它易于使用并提供更多控制和功能,请在此处查看我的答案

      Scraping a dynamically loading website with php curl

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-04-07
        • 1970-01-01
        • 2019-04-28
        • 2021-03-11
        • 2015-12-09
        • 2016-08-02
        • 1970-01-01
        相关资源
        最近更新 更多