我花了几个小时阅读堆栈溢出并尝试从某个网页获取数据但没有成功。 你可以帮帮我吗?我没有想法了。
这是html: html
我尝试了很多例子。我认为最后一个是最简单的;并且仍然不知道该怎么做。
include 'simple_html_dom.php';
//new dom object
$dom = new DOMDocument();
$html = $dom->loadHTMLFile($url);
$dom->preserveWhiteSpace = false;
$tables = $dom->getElementsByTagName('table');
$rows = $tables->item(0)->getElementsByTagName('tr');
foreach ($rows as $row)
{
/*** get each column by tag name ***/
$cols = $row->getElementsByTagName('td');
/*** echo the values ***/
echo $cols->item(0)->nodeValue.'<br />';
echo $cols->item(1)->nodeValue.'<br />';
echo $cols->item(2)->nodeValue;
echo '<hr />';
}
我得到了这个:
在非对象上调用成员函数getElementsByTagName() 因为$ tables是空的。
我需要在这个屏幕截图中只获得两个位置:
答案 0 :(得分:0)
也许这会有所帮助:
$dom = new DOMDocument();
$html = $dom->loadHTMLFile('http://www.m.rozkladzik.pl/poznan/wyszukiwarka_polaczen.html?from=Szymanowskiego%7Cb%7C105&to=Rybaki%7Cb%7C90&profile=opt&maxWalkChange=400&minChangeTime=2&currTime=1');
$dom->preserveWhiteSpace = false;
$finder = new DomXPath($dom);
$routes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' route_row ')]");
for ($i = 0; $i < 2; $i++) {
$times[] = $routes->item($i);
}
$ times现在是一个包含两个DOMElement元素的数组,这是结果的前两行。