Python BeautifulSoup:如何从自闭标签中获取文本

时间:2017-12-20 00:21:01

标签: python beautifulsoup

我试图使用beautifulsoup解析evernote清单的内容。但是当我在内容上调用html解析器时,它会不断纠正自闭标签(en-todo),所以当我尝试获取en-todo标签的文本时,它要么是空白的。

note_body = '<en-todo checked="true" />window caulk<en-todo />cake pan<en-todo />cake mix<en-todo />salad mix<en-todo checked="true"/>painters tape<br />'

import re
from bs4 import BeautifulSoup 
soup = BeautifulSoup(note_body, 'html.parser')
checklist_items = soup.find_all('en-todo')
print checklist_items

上面的代码只返回标签,没有任何文字。

[<en-todo checked="true"></en-todo>, <en-todo></en-todo>, <en-todo></en-todo>, <en-todo></en-todo>, <en-todo checked="true"></en-todo>]

3 个答案:

答案 0 :(得分:0)

这适用于您的字符串:

from bs4 import BeautifulSoup
soup = BeautifulSoup(note_body, 'html.parser')
checklist_items = soup.find_all('en-todo')
for item in checklist_items:
    print(item.get_text())

答案 1 :(得分:0)

您需要获取未标记的短信!

您需要使用tag.next_sibling

>>> [each.next_sibling for each in checklist_items]
[u'window caulk', u'cake pan', u'cake mix', u'salad mix', u'painters tape']

答案 2 :(得分:0)

尝试next

示例:

Data: <br /> My information
item.next
Gives: My information