我有这个html文件:
<html>
<head></head>
<body>
Text1
Text2
<a href="XYCL7Q.html">
Text3
</a>
</body>
</html>
我想单独收集Text1,Text2和Text3。对于Text3我没有问题,但我无法捕获Text1-2;通过这样做:
from urllib import urlopen
from bs4 import BeautifulSoup
url = 'myUrl';
html = urlopen(url).read()
soup = BeautifulSoup(html)
soup.body.get_text()
由于Text1-2可能包含一些空格,因此我得到所有文本(因为我再次获得Text3后的第一个问题)没有很好地分离...例如,如果Text1是“hello world”而Text2是“foo bar”,那么结束我想要一个2个字符串的列表:
results = ['hello world', 'foo bar']
我该怎么做?谢谢你的答案......
答案 0 :(得分:0)
您想要的文本是&#34; body&#34;的第一个子节点。你可以把它拉出来并去除污垢
>>> from bs4 import BeautifulSoup as bs
>>> soup=bs("""<html>
... <head></head>
... <body>
... Text1
... Text2
... <a href="XYCL7Q.html">
... Text3
... </a>
... </body>
... </html>""")
...
>>> body=soup.find('body')
>>> type(next(body.children))
<class 'bs4.element.NavigableString'>
>>> next(body.children)
u'\n Text1 \n Text2\n '
>>> [stripped for stripped in (item.strip() for item in next(body.children).split('\n')) if stripped]
[u'Text1', u'Text2']