<div>
块内有<div>
个内部块,
从html str中提取所有<div>
块的最快方法是什么?
(bs4,lxml还是正则表达式?)
答案 0 :(得分:2)
lxml
通常被认为是现有Python解析器中最快的,但解析速度取决于多个因素,从特定的HTML开始解析并以您可用的计算能力结束。对于HTML解析,请使用lxml.html
子包:
from lxml.html import fromstring, tostring
data = """my HTML string"""
root = fromstring(data)
print([tostring(div) for div in root.xpath(".//div")])
print([div.text_content() for div in root.xpath(".//div")])
还有一个很棒的BeautifulSoup
解析器,if allowed to use lxml
under-the-hood,它将是方便性,灵活性和速度的完美结合。它通常不会比纯lxml
更快,但它带有我见过的最好的API之一,允许您从不同的角度“查看”XML / HTML并使用各种各样的技术: / p>
from bs4 import BeautifulSoup
soup = BeautifulSoup(data, "lxml")
print([str(div) for div in soup.find_all("div")])
print([div.get_text() for div in soup.find_all("div")])
并且,我个人认为,当正则表达式适合HTML解析时,很少有 :
答案 1 :(得分:0)
当我用Python教授XML / HTML解析时,我用它来表示这种复杂程度:
对于您的问题, lxml (或 BeautifulSoup )听起来不错。