PHP Simple Dom - 获取与+ CSS选择器类似的元素之后的立即元素

时间:2017-08-01 19:46:19

标签: php html css dom web-scraping

我想用这种结构从HTML中提取数据:

<html>
  <body>
     <table>
        <tr>
            <td>
                <table>
                    <tr>
                        <td>
                            <table>
                                <tr>
                                    <td>
                                        <table>
                                            <tr>
                                                <td>TD1
                                                    <table>
                                                        <tr>
                                                            <td>TD2
                                                                <table>
                                                                    <tr>
                                                                        <td>TD3</td>
                                                                    </tr>
                                                                </table>
                                                            </td>
                                                        </tr>
                                                    </table>
                                                </td>
                                            </tr>
                                        </table>
                                    </td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
</body>

我想获得此文本结果一次:

TD1 TD2 TD3

当我尝试使用simple php dom

foreach($html->find('body + table + table + table + table') as $element) 
   echo $element->innertext . '<br>';

我得到了这个结果:

TD1 TD2 TD3

TD2 TD3

TD3

看起来像php Dom库并没有使用+ css选择器,所以它创建了元素&#34; body + table + table + table + table&#34;几次而不仅仅是直接的一个身体>表&gt;表&gt;表&gt;表。

我怎么能只获得一次外部标签,结果就是这样 TD1 TD2 TD3 ? 在一个页面的HTML中,这个结构在同一页面中有多次,所以我正在寻找类似于+ CSS选择器的东西,以便在页面中获取此元素主体+ table + table + table + table的所有实例

1 个答案:

答案 0 :(得分:0)

你可以试试Symfony的DomCrawler component。它的filter()方法接受CSS选择器(除了一些小例外,请参阅here。)