如何使用 PHP 简单 HTML DOM 解析器定位内部文章标签?

How to target an inner article tag using PHP Simple HTML DOM Parser?

我正在尝试从 URL 中提取数据:http://scores.espn.go.com/nba/scoreboard?date=20150410

<?php
include('simple_html_dom.php');

function dlPage($href) {

$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_URL, $href);
curl_setopt($curl, CURLOPT_REFERER, $href);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.125 Safari/533.4");
$str = curl_exec($curl);
curl_close($curl);

$html= str_get_html($str); 

foreach($html->find(div[id=events]) as $elm){
    var_dump($elm->plaintext);exit;
    // this var_dump is return empty string.
}

return $dom;
}

$url = 'http://scores.espn.go.com/nba/scoreboard?date=20150410';
$data = dlPage($url);
print_r($data);

?>

每当我尝试访问内部文章标签时,我总是得到 null 或空数组。请帮助我如何访问和提取比赛分数文章 html5 标签内的数据。

您正在寻找具有事件 ID 的 div。它存在于页面中,但它确实是一个空元素,至少在页面加载时是这样。它使用 ajax 填充,但是当您使用 cURL 获取页面时,您将无法获取该信息。或者任何其他不解析页面并执行 javascript.

的方法

不过,你很幸运。他们正在 ajax 呼叫:

http://site.api.espn.com/apis/site/v2/sports/basketball/nba/scoreboard?calendartype=blacklist&dates=20150410

您也可以轻松做到这一点。

它将以 json 字符串的形式为您提供信息,但使用 php 中的 json_decode 很容易解析。之后你就会有一个嵌套的对象或数组,你可以随意显示数据。

请注意:我不知道您是否可以这样做,所以您如何使用它取决于您。如果他们公开提供 API 以及条件是什么,您可以尝试在他们的网站上搜索。