【问题标题】:PHP web scraping with DOM parser使用 DOM 解析器进行 PHP 网页抓取
【发布时间】:2014-07-13 01:31:13
【问题描述】:

我正在尝试使用PHP Simple HTML DOM Parser 抓取网站

它工作正常,但是当我尝试从 this link 获取数据时。

我想在下面的标签中抓取以下文本,但发现不可能: 167/3 (48.0 ov)

<div class="team-1-name">

        India

            <span class="innings-1-score ">457</span> &amp; 

            <span class="innings-1-score innings-current">167/3 (48.0 ov)</span>


</div>

我已经尝试了许多类似下面的组合但没有成功:

$file_string = file_get_contents("http://www.espncricinfo.com/england-v-india-2014/engine/match/667711.html"); 

foreach($html->find('div[class=team-1-name]') as $team) {
     echo $team
     foreach($team->find('span[class=innings-1-score innings-current]') as $inn) {
         echo $inn;
     }
}

echo $team 按预期工作并给了我“印度”,但是 echo $inn 不返回任何内容。

我做错了什么?几天来我一直在为此绞尽脑汁 - 非常感谢任何帮助。

提前致谢。

【问题讨论】:

  • 该页面上的大部分数据是由 Javascript 读取 JSON 文件动态创建的。您将无法通过阅读页面源代码来解析您想要的内容 - 您需要阅读 JSON 文件。
  • 谢谢.. 所以$team 不是 JSON 但$inn 是?你知道我如何解析 JSON 吗?
  • JavaScript 从服务器读取 JSON 数据,因此您必须这样做。您必须分析浏览器和服务器之间的所有连接(例如在 Firefox 中使用 Firebug)并找到 JavaScript 用来获取 JSON 数据的 url。然后你就可以从这个 urls 中获取 JSON 数据了。
  • 很难仅仅依赖simple-html-dom,因为 div 中的值是由 ajax 动态(实时)提供的,请检查(很可能)开发人员控制台上的网络选项卡并检查传入网络

标签: php html web-scraping


【解决方案1】:

JavaScript 从服务器读取 JSON 数据,因此您必须这样做。您必须分析浏览器和服务器之间的所有连接(例如在 Firefox 中使用 Firebug)并找到 JavaScript 用于获取 JSON 数据的 url。然后就可以从这个 url 获取 JSON 数据了

例如试试这个 url:它是 HTML - 页面的一部分 - 你可以在浏览器中打开它。

http://www.espncricinfo.com/england-v-india-2014/engine/match/667711.html?view=scorecard;wrappertype=none;xhr=1

【讨论】:

    猜你喜欢
    • 2016-02-22
    • 1970-01-01
    • 2015-07-25
    • 2021-02-28
    • 2018-10-17
    • 2014-11-01
    • 2017-08-20
    • 2017-09-09
    • 2013-03-18
    相关资源
    最近更新 更多