相当于BeautifulSoup的Lxml find()

时间:2013-09-26 14:29:51

标签: python beautifulsoup lxml

我最近从Beautifulsoup切换到lxml,因为lxml可以使用破碎的HTML,这是我的情况。我想知道实现Beautifulsoup find()的等效或程序形式是什么。你在BS中看到我能够通过这样的搜索找到一个树节点:

bs = BeautifulSoup(html)
bs.find('span', {'class': 'some-class-name'})

lxml find()只搜索树上的当前级别,如果我想在所有树节点中搜索该怎么办?

由于

2 个答案:

答案 0 :(得分:2)

您可以使用cssselect

root = lxml.html.fromstring(html)
root.cssselect('span.some-class-name')

xpath

root.xpath('.//span[@class="some-class-name"]')

cssselectxpath方法都返回BeautifulSoup中匹配元素的列表,如findAll/find_all方法。

答案 1 :(得分:1)

如果您不想学习lxmlxpath表达式的api,那么这是另一种选择:

来自:http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser

  

Beautiful Soup支持Python标准库中包含的HTML解析器,但它也支持许多第三方Python解析器。一个是lxml解析器[...]

并指定要使用的特定解析器:

BeautifulSoup(markup, "lxml")