【发布时间】:2017-09-25 23:03:53
【问题描述】:
我正在尝试使用 PHP 将此外部表数据转换为数组/JSON。我能够使用 XPath 并计算 td 等来做到这一点,但是,数据每周都会发生一些变化并且把所有事情都搞砸了......有没有一种好的方法来提取这些信息并使用条件语句来根据玩家的显示适当的值姓名?这是表格的链接See Here
我想得到类似的东西
Player name:
GAMES:
MPR:
PPR:
Player name:
GAMES:
MPR:
PPR:
etc...
如果有人能帮助我或指出正确的方向,我将不胜感激!这让我发疯了,如果有必要我什至会付钱。
谢谢!
这是我当前的代码
$urll = 'http://www.leagueleader.net/sharedreport.php?operatorid=98&code=1928e435-8dbe-450f-8bca-74f603f892f0';
$options = array (
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0", // something like Firefox
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);
$curl = curl_init($urll);
curl_setopt_array( $curl, $options );
$content = curl_exec($curl);
curl_close($curl);
$dom = new DOMDocument();
@$dom->loadHTML($content);
$xpath = new DOMXPath($dom);
$tabless = $dom->getElementsByTagName('tbody');
$rows = $tabless->item(0)->getElementsByTagName('tr');
foreach ($rows as $roww)
{
$colss = $roww->getElementsByTagName('td');
//$player = $cols->item(0)->nodeValue; $pstats[$i]['player'] = trim($player);
//$percentage = $cols->item(1)->nodeValue; $pstats[$i]['gamesplayed'] = trim($percentage);
$cricket = $colss->item(2)->nodeValue; $pstats[$j]['cricket'] = trim($cricket);
$o1 = $colss->item(3)->nodeValue; $pstats[$j]['01'] = trim($o1);
$j++;
}
【问题讨论】:
-
请显示您当前的代码,也许有人可以建议如何更改它。而不是为你编写代码。
-
对“使用 PHP 抓取 HTML”(here's a tutorial for example) 进行一些研究,看看您自己编写代码的好处。 Stack Overflow 用于调试,而不是为您编写所有代码。
-
如果他们改变了他们的结构,如果他们没有一些你可以访问的标准化 JSON 或 XML,你就必须每次都做出改变。如果您认为这将是他们一直生成的输出,并且没有其他可靠的方式来获取他们的数据,请考虑 PHP 的 DOMDocument。
标签: php arrays json curl xpath