2011-06-10 122 views
-2

我有一個大問題。我想用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 

所有我想要做的是分析該表,並獲得每一個單元格的內容。

非常感謝你!

+0

*(相關)* [最佳方法來解析HTML](HTTP:// stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662) – Gordon 2011-06-10 09:46:39

+1

你可能想指出你已經嘗試過並向我們展示一些東西碼。 StackOverflow有很多例子來解析HTML,現在你的問題就像gimme-teh-codez一樣。 – Gordon 2011-06-10 09:54:56

+0

*(相關)* [穩健和成熟的HTML解析器的PHP](http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php) – Gordon 2011-06-10 09:57:42

回答

1
+0

除了難以回答,因爲它不顯示OP如何實現他的目標,SimpleHTMLDom對解析器來說是一個糟糕的選擇。這很慢,有一個糟糕的代碼庫,並不基於libxml。查看我的鏈接下面的問題更好的替代SimpleHtmlDom。 – Gordon 2011-06-10 09:48:04

+0

這很酷的事情。非常感謝! – Gigg 2011-06-10 10:03:18

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

... 
+0

不使用錯誤抑制。使用['libxml_use_internal_errors'](http://nl2.php.net/manual/en/function.libxml-use-internal-errors.php)和['libxml_clear_errors'](http://nl2.php.net/ manual/en/function.libxml-clear-errors.php) – Gordon 2011-06-10 09:52:38

+1

@Gordon改變它,謝謝你的提示! :) – Yoshi 2011-06-10 09:55:21

+0

這工作!非常感謝。你救了我!我將開始更多地瞭解DOMDocument的。它似乎在這種情況下起作用。 – Gigg 2011-06-10 10:04:34