python - BeautifulSoup 使用字符串/文本获取第一个值

标签 python beautifulsoup html-parsing

Beautifulsoup在 python 中进行 html 解析很方便,但是我遇到了问题,需要使用干净的代码来直接使用 stringtext

获取值
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.0python 2.7

一起使用

最佳答案

您可以简单地使用.find()通过设置 textrecursive 来实现功能论证。

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/

相关文章:

python - 如何在 wxglade 中添加自定义小部件

python - 如何从 requests.get() 获取更多标签

python - Beautifulsoup 如何找到所有工作

java - 为什么我不能将我抓取的 HTML 解析为 XML?

python - 循环遍历文本,一次 3 个字符

python - 自动对 pandas 数据框中具有相似名称的多个列进行分组

python - Python3 中的简单网络爬虫不产生输出。这是怎么回事?

python - 将 lxml 输出传递给 BeautifulSoup

javascript - jquery根据其他类更改类元素的值

python - 限制 IP 地址以访问您在 GAE 上的应用程序?