javascript - 如何使用 PHP Simple HTML DOM Parser 定位内部文章标签?

标签 javascript php html web-scraping simple-html-dom

我正在尝试从 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 标签内的数据。 enter image description here

最佳答案

您正在寻找带有事件 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 以及条件是什么。

关于javascript - 如何使用 PHP Simple HTML DOM Parser 定位内部文章标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29708023/

相关文章:

php - nginx 中如何处理 post 值

jquery - 如何在 ul 中添加 li 元素作为 2 列

javascript - Angular 5函数在悬停时不断调用

javascript - 尝试在控制台中记录函数时出现未定义

javascript - 什么时候在 JavaScript 中创建对象/实例?

javascript - 点击事件的问题

javascript - 如何从本地执行 HTML 和 Javascript *.bat 文件

javascript - 当我使用 Node.js 作为 Web 应用程序时,我应该使用 sql 还是 Json 存储数据

javascript - Firebug : TypeError: 'click' called on an object that does not implement interface HTMLElement

javascript - while 循环使用谷歌图表