gpt4 book ai didi

python - lxml 相当于 BeautifulSoup "OR"语法?

转载 作者:太空狗 更新时间:2023-10-30 00:12:20 26 4
gpt4 key购买 nike

我正在将一些 html 解析代码从 BeautifulSoup 转换为 lxml。我试图找出以下 BeautifullSoup 语句的 lxml 等效语法:

soup.find('a', {'class': ['current zzt', 'zzt']})

基本上,我想在文档中找到类属性为“current zzt”或“zzt”的所有“a”标签。 BeautifulSoup 允许传入列表、字典甚至正则表达式来执行匹配。

什么是 lxml 等价物?

谢谢!

最佳答案

不,lxml 不提供您正在寻找的“先查找或不返回”方法。如果需要,只需使用 (select(soup) or [None])[0],或者编写一个函数来为您完成。

#!/usr/bin/python
import lxml.html
import lxml.cssselect
soup = lxml.html.fromstring("""
<html>
<a href="foo" class="yyy zzz" />
<a href="bar" class="yyy" />
<a href="baz" class="zzz" />
<a href="quux" class="zzz yyy" />
<a href="warble" class="qqq" />
<p class="yyy zzz">Hello</p>
</html>""")

select = lxml.cssselect.CSSSelector("a.yyy.zzz, a.yyy")
print [lxml.html.tostring(s).strip() for s in select(soup)]
print (select(soup) or [None])[0]

好的,所以 soup.find('a') 确实会首先找到一个元素或 None,如您所料。问题是,它似乎不支持 CSSSelector 所需的丰富 XPath 语法。

关于python - lxml 相当于 BeautifulSoup "OR"语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1384470/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com