Fom*_*aut 3 python beautifulsoup
假设我有一个像这样的html字符串:
<html>
<div id="d1">
Text 1
</div>
<div id="d2">
Text 2
<a href="http://my.url/">a url</a>
Text 2 continue
</div>
<div id="d3">
Text 3
</div>
</html>
Run Code Online (Sandbox Code Playgroud)
我想提取的内容d2是不被其他标签包裹,跳过a url.换句话说,我想得到这样的结果:
Text 2
Text 2 continue
Run Code Online (Sandbox Code Playgroud)
有没有办法用BeautifulSoup做到这一点?
我试过这个,但这不正确:
soup = BeautifulSoup(html_doc, 'html.parser')
s = soup.find(id='d2').text
print(s)
Run Code Online (Sandbox Code Playgroud)
试试.find_all(text=True, recursive=False):
from bs4 import BeautifulSoup
div_test="""
<html>
<div id="d1">
Text 1
</div>
<div id="d2">
Text 2
<a href="http://my.url/">a url</a>
Text 2 continue
</div>
<div id="d3">
Text 3
</div>
</html>
"""
soup = BeautifulSoup(div_test, 'lxml')
s = soup.find(id='d2').find_all(text=True, recursive=False)
print(s)
print([e.strip() for e in s]) #remove space
Run Code Online (Sandbox Code Playgroud)
list只返回一个text:
[u'\n Text 2\n ', u'\n Text 2 continue\n ']
[u'Text 2', u'Text 2 continue']
Run Code Online (Sandbox Code Playgroud)