Beautifulsoup在 python 中进行 html 解析很方便,但是我遇到了问题,需要使用干净的代码来直接使用 string
或 text
from bs4 import BeautifulSoup
tr ="""
<table>
<tr><td>text1</td></tr>
<tr><td>text2<div>abc</div></td></tr>
</table>
"""
table = BeautifulSoup(tr,"html.parser")
for row in table.findAll("tr"):
td = row.findAll("td")
print td[0].text
print td[0].string
结果:
text1
text1
text2abc
None
如何获得结果
text1
text2
我想跳过额外的内部标签
beautifulsoup4-4.5.0
与 python 2.7
最佳答案
您可以简单地使用.find()
通过设置 text
和 recursive
来实现功能论证。
for row in table.findAll("tr"):
td1 = row.td.find(text=True, recursive=False)
print str(td1)
您将得到如下输出:
text1
text2
无论 div
标签的位置如何,这都会起作用。请参阅下面的示例。
>>> tr ="""
<table>
<tr><td>text1</td></tr>
<tr><td>text2<div>abc</div></td></tr>
<tr><td><div>abc</div>text3</td></tr>
</table>
"""
>>> table = BeautifulSoup(tr,"html.parser")
>>> for row in table.findAll("tr"):
td1 = row.td.find(text=True, recursive=False)
print str(td1)
text1
text2
text3
关于python - BeautifulSoup 使用字符串/文本获取第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38637792/