2010-02-26 36 views
6

我使用PHP簡單的HTML DOM解析器刮網上商店(也運行XAMPP 1.7.2與PHP5.3.0)的一些數據,和我正在與<tbody>標籤問題。該表的結構,essentialy(細節並不真的那麼重要):<tbody>毛刺在PHP簡單的HTML DOM解析器

<table> 
    <thead> 
    <!--text here--> 
    </thead> 
    <tbody> 
    <!--text here--> 
    </tbody> 
</table> 

現在,我嘗試使用代碼來獲取到<tbody>部分:

$element = $html->find('tbody',0)->innertext; 

一點也沒有不會拋出任何錯誤,當我試圖回顯它時,它不會打印任何內容。我已經測試了其他元素上的代碼,<thead>,<table>,甚至像<span class="price">這樣的代碼,它們都可以正常工作(ofcourse,刪除「,0」代碼失敗)。他們都給出了正確的部分。 Outertext同上。但這一切都失敗了<tbody>

現在,我已經瀏覽瞭解析器,但我不確定我能弄明白。我注意到,<thead>甚至沒有提及,但它工作正常。 聳肩

我想我可以嘗試做兒童導航,但似乎也有小故障。我剛試過跑步:

$el = $html->find('table',0); 
$el2 = $el->children(2); 
echo $el2->outertext; 

並沒有骰子。試着用first_child替換children,用1替換2,仍然沒有骰子。有趣的是,如果我嘗試->find而不是children,它可以很好地工作。

我非常有信心我可以找到一個解決方案,但這種行爲似乎很古怪,可以在這裏發佈。我好奇的心情很高興能夠得到所有的幫助。

回答

1

確保您的tbody來自一些JavaScript執行。我遇到了span標籤的相同問題。後來我發現,如果有任何html代碼通過jquery /任何其他JavaScript執行進入頁面,那麼在這種情況下,simple_html_dom就會失敗。

24
在simple_html_dom.php文件註釋

或刪除線#396

// if ($m[1]==='tbody') continue; 
+1

僅供參考:在'1.11'版本(修訂版184)中,該代碼在'629'行。 – h2ooooooo 2013-07-30 11:08:07

+0

這應該在文檔'>中提到:(' – 2013-08-02 16:38:19

+2

在版本1.5(196版本)中,代碼位於695行 – 2014-12-06 23:15:47

1

確保TBODY真的是存在的。許多瀏覽器會在檢查面板中添加一個表格,儘管它們不在響應中。

2

沒有爲這裏該問題的錯誤報告: http://sourceforge.net/p/simplehtmldom/bugs/79/

它仍然是在寫這篇文章的時候開放。還有,如果你不希望修改源代碼,例如在一個循環中找到<tr>

<?php 
    // The *BROKEN* way to find the <tr>'s 
    // below the <tbody> below the <table id="foo"> 
    foreach($dom->find('tbl#foo tbody tr') as $tr) { 
    /* you will get nothing */ 
    } 

可以代替選擇性地檢查父標籤名稱,而迭代所有<tr>的替代修復像這樣:

<?php 
    // A workaround to find the <tr>'s 
    // below the <tbody> below the <table id="foo"> 
    foreach($dom->find('tbl#foo tr') as $tr) { // note the lack of tbody selector 
    /* you will get all trs, but let's only work with ones with the parent 
     of a tbody! */ 
    if($tr->parent->tag == 'tbody') { // our workaround 
     /* this part will work as you would expect the above broken code to work */ 
    } 
    } 

還要注意,我碰到了,那Chrome和FF檢查員將糾正關於<tbody><thead>標籤湯稍不相關的問題。要小心 - 只能看到實際的源代碼 - 如果遇到無法解釋的問題,請遠離DOM檢查員。參考文獻:

+0

您已保存我的夜晚男人我不知道爲什麼你沒有任何打擊,但沒有更改幫手文件,你的解決方案是最好的。謝謝。 – 2016-10-27 21:25:31