我正在尝试使用 python+beautifulsoup 抓取文本。我输入如下代码:
soup.find_all("span")[0]
这让我:
<span style="margin-right: 0.9em">TEXT1 <span style="color:
#111111; margin-left: 0.2em">TEXT2 </span>TEXT3 </span>
这太棒了。但问题是我想提取 TEXT1
, TEXT2
, 和 TEXT3
分别地。
我不知道该怎么做。如果我这样做:
soup.find_all("span")[0].find_all("span"), 我只得到
<span style="color:
#111111; margin-left: 0.2em">TEXT2 </span>
我认为这是因为这个特定的包含 <span>
和 </span>
.如何挑选TEXT1
, TEXT2
, 和 TEXT3
?
最佳答案
这是一个使用文本属性完成工作的片段。
In [3]: soup = BeautifulSoup('<span style="margin-right: 0.9em">TEXT1 <span style="color:#111111; margin-left: 0.2em">TEXT2 </span>TEXT3 </span>')
...:
In [4]: soup
Out[4]: <html><body><span style="margin-right: 0.9em">TEXT1 <span style="color:#111111; margin-left: 0.2em">TEXT2 </span>TEXT3 </span></body></html>
In [5]: soup.text
Out[5]: u'TEXT1 TEXT2 TEXT3 '
您也可以剥离和拆分输出。
In [7]: soup.text.strip().split()
Out[7]: [u'TEXT1', u'TEXT2', u'TEXT3']
关于python - 如何使用 beautifulsoup 在 span 标签之间进行抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29110820/