Php 网页刮取问题

Php 网页刮取问题,php,html,tags,web-scraping,Php,Html,Tags,Web Scraping,我有个大问题。我想用php解析一个网页。 我不明白为什么它不起作用。我想从该页面获取“tr”标记,然后,我将通过“td”标记解析之前获得的每个文本。问题是我不能解析文本,所以两个标记之间可以有另外两个 我应该知道威奇有什么把戏吗?因为我已经试了两天了,但还是没有结果 这是网页: http://www.tjareborg.fi/akkilahdot?DepartureIds=-1&CtryId=-1&DestinationAirportIds=-1&ResId=-1&

我有个大问题。我想用php解析一个网页。 我不明白为什么它不起作用。我想从该页面获取“tr”标记,然后,我将通过“td”标记解析之前获得的每个文本。问题是我不能解析文本,所以两个标记之间可以有另外两个

我应该知道威奇有什么把戏吗?因为我已经试了两天了,但还是没有结果

这是网页:

http://www.tjareborg.fi/akkilahdot?DepartureIds=-1&CtryId=-1&DestinationAirportIds=-1&ResId=-1&QueryDurID=a&QueryDepDate=10.6.2011&LmsTypeId=2%2c3%2c1&PaxPrice=2167&SortAscending=True&page=0
我所要做的就是解析该表,并获取每个单元格的内容

非常感谢你

试试看

试试:

libxml_use_internal_errors(true);

$url = '%your url%';
$dom = new DOMDocument;
$dom->loadHTML(file_get_contents($url));

libxml_clear_errors();

$xpath = new DOMXPath($dom);
$rows = array();
foreach ($xpath->query('//*[@id="tblLmsList"]//tr') as $tr) {
    $cells = array();
    foreach ($xpath->query('td', $tr) as $td) {
        $cells[] = trim($td->nodeValue);
    }

    if (sizeof($cells) > 0) {
        $rows[] = $cells;
    }
}

print_r($rows);
输出

Array
(
    [0] => Array
        (
            [0] => la 11.6.
            [1] => Varna
                Bulgaria
            [2] => Helsinki
            [3] => Matkajokeri
            [4] => 175,-
            [5] => 
            [6] => -
            [7] => 
            [8] => -
            [9] => 
        )

    [1] => Array
        (
            [0] => la 11.6.
            [1] => Varna
                Bulgaria
            [2] => Helsinki
            [3] => Pelkät lennot
            [4] => 150,-
            [5] => 
            [6] => -
            [7] => 
            [8] => -
            [9] => 
        )

...

(相关)您可能想指出您已经尝试过的内容,并向我们展示一些代码。StackOverflow有很多关于如何解析HTML的例子,现在你的问题像gimme teh codez(相关)一样被理解了。除了因为它没有向OP展示如何实现他的目标而难以回答之外,SimpleHTMLDom对于解析器来说是一个糟糕的选择。它速度慢,代码库糟糕,并且不基于libxml。有关SimpleHtmlDom的更好替代方案,请参见问题下方的链接。不要使用错误抑制。使用,这是有效的!!非常感谢你。你救了我!我将开始学习更多关于DOMDocument的知识。在这种情况下似乎是有效的。