如何使用 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 以及条件是什么,您可以尝试在他们的网站上搜索。
我正在尝试从 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 以及条件是什么,您可以尝试在他们的网站上搜索。