网页刮痧问题

时间:2011-06-10 09:41:47

标签: php html tags web-scraping

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

我应该知道有什么诀窍吗?因为我正在尝试超过2天而且我仍然无法得到结果。

这是页面:

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

我想做的就是解析该表,并获取每个单元格的内容。

非常感谢!!!

2 个答案:

答案 0 :(得分:2)

尝试:

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] => 
        )

...

答案 1 :(得分:1)