使用
soup_html = BeautifulSoup(html, "html.parser")
解析 HTML 使用默认解析器。
使用
soup_xml = BeautifulSoup(html, "xml")
解析 HTML 使用 lxml lib 中的解析器。
如果 HTML 有这样的元素
<div class="a b"/>
element = soup_html.find("div", class_="a")
将返回一个元素,它似乎在“部分”查找模式下工作
另一方面
element = soup_xml.find("div", class_="a")
回归
None
如何使 soup_xml 以与 soup_html 相同的方式工作并进行部分查找?
解决方法是将 find 替换为 CSS_SELECTOR
element = soup_xml.select_one("div.a")
...但是,现在代码中有很多地方需要仔细替换,而且我也认为 find 可能比 select_one 快一点。
如果只是拼写错误,解决方案是使用
lxml
parser,BeautifulSoup
默认也会使用它。
from bs4 import BeautifulSoup
html = '''
<div class="a b"/>
'''
soup = BeautifulSoup(html, "lxml")
soup.find("div", class_="a")