2012-11-18 34 views
2

我使用簡單的HTML DOM從HTML文檔中提取數據,並且我有幾個需要幫助的問題。使用簡單的HTML遍歷表格DOM

  1. 在隨if ($td->find('a'))我想單獨提取href和錨節點的內容,並將其放置在單獨的變量開頭的行。但是代碼不起作用(請參閱下面代碼中的回聲輸出)。

    這樣做的最好方法是什麼?請注意,我的目的是在後面的信息中創建一個XML文檔,所以我需要按照正確的順序排列信息。

  2. 鏈接導致包含有關不同汽車的詳細信息(例如「最高速度」,「價格」等)的頁面,我也想將其提取並放入單獨的變量中。我怎樣才能獲得這些網頁上的數據?

    <?php 
    include 'simple_html_dom.php'; 
    
    $html = new simple_html_dom(); 
    $html = file_get_html('http://www.example.com/foo.html'); 
    
    $items = array(); 
    
    foreach ($html->find('table') as $table) { 
        foreach ($table->find('tr') as $tr) { 
    
         foreach ($tr->find('td') as $td) { 
    
          if ($td->find('a')) { 
           $link = $td->find('a.href'); 
           echo $link; // empty 
    
           $text = $td->find('a.text'); 
           echo $text; // Array 
          } 
          else { 
           echo 'Name: ' . $td; 
          } 
         } 
        } 
    } 
    

HTML文檔看起來是這樣的:

<div> 
    <table> 
     <tr> 
      <td> 
       <a href="car1.html" target="_blank">Car 1</a> 
      </td> 
      <td> 
       Porsche 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <a href="car2.html" target="_blank">Car 2</a> 
      </td> 
      <td> 
       Chrysler 
      </td> 
     </tr> 
     ... and so on... 
+0

你能否納入我們對我們答案的建議並更新你的問題? –

回答

2

使用$td->find('a', 0)->href$td->find('a', 0)->innertext訪問在第一種情況元素屬性和內容在第二位。另外,如果可能存在多個錨點,則使用0作爲安全防護,以始終獲得第一個錨點。

+0

謝謝,解決了我的問題! – holyredbeard

+0

@holyredbeard酷,很高興知道! –

2

'a.href'是用於查找具有CSS類href的錨標記的選擇器。不要獲取錨標籤的href屬性。你可以這樣做:

$link = $td->find('a', 0); 
$href = $link->href; 
+1

我一直在想,如果有這個3d派對類的活躍用戶,很高興看到,有幾個:) –