BeautifulSoup 使用 string/text 获取第一个值
BeautifulSoup to get first value using string/text
Beautifulsoup 对于 html 在 python 中的解析很方便,但我遇到了使用 string
或 [=16= 直接获取值的干净代码的问题]
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
一起使用
你可以试试这个:
for row in table.findAll("tr"):
td = row.findAll("td")
t = td[0]
print t.contents[0]
但这只有在您总是在 div 标签
之前寻找文本时才有效
您可以简单地使用 .find()
function by setting the text
and 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
Beautifulsoup 对于 html 在 python 中的解析很方便,但我遇到了使用 string
或 [=16= 直接获取值的干净代码的问题]
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
你可以试试这个:
for row in table.findAll("tr"):
td = row.findAll("td")
t = td[0]
print t.contents[0]
但这只有在您总是在 div 标签
之前寻找文本时才有效您可以简单地使用 .find()
function by setting the text
and 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