2013-08-26 38 views
0

我有一個table,其列數可以改變,取決於報廢頁面的配置(我無法控制它)。我只想從列標題指定的特定列中獲取信息。如何在使用DOM抓取網頁表時獲取特定的​​?

樣品表:

<table> 
    <tr> 
     <td>Name</td> 
     <td>Age</td> 
     <td>Marks</td> 
    </tr> 
    <tr> 
     <td>A</td> 
     <td>20</td> 
     <td>90</td> 
    </tr> 
    <tr> 
     <td>B</td> 
     <td>21</td> 
     <td>80</td> 
    </tr> 
    <tr> 
     <td>C</td> 
     <td>22</td> 
     <td>70</td> 
    </tr> 
</table> 

我工作的PHP代碼來顯示所有列:

foreach($html->find("table#table2 tr td") as $td) { 
    $code = $td; 
    echo $code; 
} 

所需的代碼格式:

foreach($html->find('table#table2 td') as $td) { 
    /* Get td1 data */ 
    /* Code1 to store td data 1 */ 

    /* Get next td data */ 
    /* Code2 to store td data 2 */ 

    /* Get the next td data */ 
    /* Code3 to store td data 3 */ 
} 

我想提取輸出和存儲它到具有表名的數據庫表導致適當的列。

我可以自己寫存儲代碼。 我需要一個代碼來檢索行內沒有循環的連續td數據。因爲存儲td數據的代碼有所不同。

我參考的帖子 - scraping webpage

+0

是你使用SimpleHTMLDom解析器? –

+0

@AmalMurali - S.我使用Sourceforge的Simple HTML DOM解析器。 –

回答

1
// Create DOM from URL or file 
$html = file_get_html("http://www.example.org/"); 

// Find the tr array 
$tr_array = $html->find("table#table2 tr"); 

$td_array = []; 
// Find the td array 
foreach($tr_array as $tr) { 
    array_push($td_array,$tr->find("td")); 
} 

echo "<table id=\"table1\">"; 
foreach($tr_array as $tr) { 
    echo "<tr>"; 
    foreach($td_array as $td) { 
     echo $td; 
    } 
    echo "</tr>"; 
} 
echo "</table>"; 

有關高級主題,請閱讀simplehtmldom


在上面的代碼中,我存儲陣列對象中的陣列:

<?php 

$a = []; 
$a1 = [1,2,3]; 
$a2 = [4,5,6]; 
array_push($a,$a1,$a2); 
foreach($a as $a_e) { 
    foreach($a_e as $e) { 
    echo $e; 
    } 
    echo "<br>"; 
} 

?> 

輸出:

123
456

+0

獲取錯誤 - '$ td_array = [];' 解析錯誤:語法錯誤,意外'[' –

+0

@SriRam Bhai編輯kar diya answer 。如果它是正確的,請將其註冊或標記爲答案。嘗試一下從你身邊 - 我們可以告訴你方式,chalna tujhe padega! :) – GLES

+0

我試圖創建一個空陣列... Bt ..我不能創建它.. –

0

讓所有TD在特定表

//get into specific table. table number is from 0,1,2,3.. in your whole html returned 
$table = $html->find('table', tableNumber); 
$td = $html->find('td'); 
foreach($td as $tds) 
{ 
    echo $tds; 
}