我正在尝试从网址中提取数据: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标签内的数据。
答案 0 :(得分:1)
您正在寻找一个div和事件ID。它存在于页面中,但它确实是一个空元素,至少在页面加载时。它使用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以及条件是什么,您可以尝试在他们的网站上搜索。