beautifulsoup如何只爬取直接标签的内容而不爬取子标签的内容

对于这个问题,在网上大概找到两种靠谱点的回答,但实际上也是有问题的。

第一种方法

调用find(text=True).strip()

第二种方法

调用stripped_strings

 

测试代码

from bs4 import BeautifulSoup

html1 = """
<li>
<span class="hello"> hello</span>
world
<span class="hi"> hi</span>
good
</li>
"""
html2 = """
<li>
world
<span class="hello"> hello</span>
good
<span class="hi"> hi</span>
</li>
"""
a = BeautifulSoup(html1, "lxml").find('li').find(text=True).strip()
print("a=%s"%a)
b = BeautifulSoup(html1, "lxml").find('li').stripped_strings
print("b=%s"%list(b)[1])
a = BeautifulSoup(html2, "lxml").find('li').find(text=True).strip()
print("a=%s"%a)
b = BeautifulSoup(html2, "lxml").find('li').stripped_strings
print("b=%s"%list(b)[1])

输出结果

可以看到,这两种方法都不满足要求!

有知道的大神么,请告知小弟一下,感激不尽!!!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值