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

标签 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 选择器一起工作,所以它多次找到元素“body + table + table + table + table”,而不仅仅是直接的一个 body > table > table > table > 表。

我怎样才能只获得一次外部标签,所以结果会是 TD1 TD2 TD3 ? 在一个页面的 HTML 中,同一页面中有多次这种结构,所以我正在寻找类似于 + CSS 选择器的东西来获取页面中此元素 body + table + table + table + table 的所有出现。

最佳答案

你可以试试 Symfony 的 DomCrawler component .这是filter()方法接受 CSS 选择器(有一些小的异常(exception),请参阅 here。)

关于PHP Simple Dom - 在类似于 + CSS 选择器的元素后立即获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45446471/

相关文章:

php - 将数据插入数据库不起作用

php - 防止 nicEdit 创建外部标签

html - 如何在调整屏幕大小时移动水平 li 的所有内容?

css - 如何从 TextInput 中删除投影?

javascript - 来自与 Cordova 一起使用的基于 Android HTML5 的应用程序的流行相机或视频捕获选项

html - 带边框的响应框

php - php-fpm 如何使用动态进程管理器管理 worker?

PHP 事务和 mysqli_insert_id

html - CSS 大小/性能?

javascript - 简单的 JS 执行但不做任何事情