Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在DOM解析器中解析ajax脚本?_Php - Fatal编程技术网

Php 如何在DOM解析器中解析ajax脚本?

Php 如何在DOM解析器中解析ajax脚本?,php,Php,我从中得到分数 我能够解析所有属性。但我无法解析时间 我曾经 $homepages = file_get_html("http://sports.in.msn.com/football-world-cup-2014/south-africa-v-brazil/1597383"); $teama = $homepages->find('span[id="clock"]'); 请帮助我由于该特定站点正在动态加载值(通过AJAX请求),您无法在初始加载时真正解析值 <span id="

我从中得到分数

我能够解析所有属性。但我无法解析时间

我曾经

$homepages = file_get_html("http://sports.in.msn.com/football-world-cup-2014/south-africa-v-brazil/1597383");

$teama = $homepages->find('span[id="clock"]');

请帮助我

由于该特定站点正在动态加载值(通过AJAX请求),您无法在初始加载时真正解析值

<span id="clock"></span> // this tends to be empty initial load
我的建议是,你也需要通过请求访问它,而不是将其删除,因为这是一个时间(当然,随着比赛的进行,这将不断变化,直到比赛结束)。或者你也可以使用他们的请求

$url = 'http://sports.in.msn.com/liveplayajax/SOCCERMATCH/match/gsm/en-in/1597383';
$contents = file_get_contents($url);
$data = json_decode($contents, true);

echo '<pre>';
print_r($data);
echo '</pre>';
您应该使用foreach获得
90'
。考虑这个例子:


应该打印:
90'

我不认为这是节省时间的方法,因为它是动态加载的。在抓取站点时,
的初始节点值。然后在页面加载之后通过ajax加载值。也许如果你可以访问他们正在使用的api,也许这就是你争取时间的解决方案。也许你可以处理JSON值而不是删除站点。样品谢谢!以及如何单独打印[Min]=>90'如果我使用另一个匹配链接,我无法获得时间。我使用了mozilla firebug,并且能够在DOM中看到这样的情况
,如果我能够获得持续的比赛时间而不是评论时间,那就更好了。请在这方面帮助我。@user3354786是的,我可能可以在这方面帮助你,但也许你可以通过一个链接共享它,它也在同一页上吗?对于这场比赛
http://sports.in.msn.com/football-world-cup-2014/argentina-v-slovenia/1630386
@user3354786您确定它的
?在那一页里面?我正在浏览器控制台中搜索,但找不到
$url = 'http://sports.in.msn.com/liveplayajax/SOCCERMATCH/match/gsm/en-in/1597383';
$contents = file_get_contents($url);
$data = json_decode($contents, true);

echo '<pre>';
print_r($data);
echo '</pre>';
[2] => Array
    (
        [Code] => 
        [CommentId] => -1119368663
        [CommentType] => manual
        [Description] => FULL-TIME: South Africa 0-5 Brazil.
        [Min] => 90'
        [MinExtra] => (+3)
        [View] => 
        [ViewHint] => 
        [ViewIndex] => 0
        [EditKey] => 
        [TrackingValues] => 
        [AopValue] => 
    )
foreach($data['Commentary']['CommentaryItems'] as $key => $value) {
    if(stripos($value['Description'], 'FULL-TIME') !== false) {
        echo $value['Min'];
        break;
    }
}