【发布时间】: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> &
<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