gpt4 book ai didi

python - 在 Python 中获取 td 的完整文本 (lxml)

转载 作者:太空宇宙 更新时间:2023-11-03 16:04:01 27 4
gpt4 key购买 nike

我正在尝试获取此 td 中包含的全部文本:

示例:

<td>
<p>Some Text</p>
<a>SAMPLE</a>
<table>
<tbody>
<tr>
<td>something</td>
....
</tr>
...
</tbody>
</table>
...
</td>

这个td里面有很多标签,这让我很难受。甚至连 table 也包含在内。

在 FirePath (Firefox) 中,我可以简单地附加//text()

.//*[@id='Testcases__list']/table/tbody/tr/td//text()

但是在 Python 代码中,使用 lxml 库//text() 部分会引发错误

Traceback (most recent call last):
File "D:\pythonscripts\Bachelor\TestMain.py", line 52, in <module>
print tr.findall('./td[6]//text()')[0].text
File "src\lxml\lxml.etree.pyx", line 1563, in lxml.etree._Element.findall (src\lxml\lxml.etree.c:56897)
File "C:\Python27\lib\site-packages\lxml\_elementpath.py", line 304, in findall
return list(iterfind(elem, path, namespaces))
File "C:\Python27\lib\site-packages\lxml\_elementpath.py", line 277, in iterfind
selector = _build_path_iterator(path, namespaces)
File "C:\Python27\lib\site-packages\lxml\_elementpath.py", line 260, in _build_path_iterator
selector.append(ops[token[0]](_next, token))
KeyError: '()'

如何在 Python 中获取该 td 的全文?

最佳答案

您应该使用.xpath而不是findall:

tr.xpath("//*[@id='Testcases__list']/table/tbody/tr/td//text()")

要获取第一个 td:

 tr.xpath("(//*[@id='Testcases__list']/table/tbody/tr/td)[1]/text()")

我还会验证源代码是否确实具有 tbody 元素,通常它是由浏览器添加的,而不是在实际源代码中。

您可以text_content:

tr.xpath("(//*[@id='Testcases__list']/table/tbody/tr/td)[1]")[0].text_content()

关于python - 在 Python 中获取 td 的完整文本 (lxml),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40038814/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com