我想从具有这种结构的 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/