我试图使用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>]
答案 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