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>]

您需要获取标签中未包含的短信!

您需要使用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']

这适用于您的字符串:

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())

尝试next

示例:

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

最新更新