lxml.cssselect CSSSelector 不支持属性
lxml.cssselect CSSSelector doesn't support attributes
我正在尝试解析 HTML 页面并获取具有特定属性的项目。我正在使用 lxml.cssselect
来完成这项工作。
我似乎无法让它与属性选择器一起使用。以下选择器:例如 p[itemprop="articleBody"]
returns this page 什么都没有。使用来自 Firefox 或 Chrome 的相同选择器有效。
当我尝试使用没有属性的选择器时,它们确实有效。
我用 html
转换器创建了 CSSSelector。
难道lxml.cssselect根本不支持这种选择器吗?我在文档中找不到对它的任何引用。
我不具备 lxml.cssselect
方面的专业知识(我走得很快,甚至无法设置元素树,因此无法重现您的确切问题)。但是,我使用可能对您有用的等效 lxml
方法取得了成功。
from lxml import html
import requests
url = 'http://abcnews.go.com/US/wireStory/man-jail-writing-racist-graffiti-refugees-homes-33488053'
page = requests.get(url)
tree = html.fromstring(page.text)
p_elements = tree.cssselect('p[itemprop="articleBody"]')
print(p_elements)
输出:
[<Element p at 0xa503ae8>,
<Element p at 0xa503db8>,
<Element p at 0xa503bd8>,
<Element p at 0xa54b1d8>,
<Element p at 0xa54b0e8>,
<Element p at 0xa54b138>,
<Element p at 0xa54b188>]
一般来说,在使用 lxml
时,我发现通过 XPath 选择元素比 CSS 选择器灵活得多。
我正在尝试解析 HTML 页面并获取具有特定属性的项目。我正在使用 lxml.cssselect
来完成这项工作。
我似乎无法让它与属性选择器一起使用。以下选择器:例如 p[itemprop="articleBody"]
returns this page 什么都没有。使用来自 Firefox 或 Chrome 的相同选择器有效。
当我尝试使用没有属性的选择器时,它们确实有效。
我用 html
转换器创建了 CSSSelector。
难道lxml.cssselect根本不支持这种选择器吗?我在文档中找不到对它的任何引用。
我不具备 lxml.cssselect
方面的专业知识(我走得很快,甚至无法设置元素树,因此无法重现您的确切问题)。但是,我使用可能对您有用的等效 lxml
方法取得了成功。
from lxml import html
import requests
url = 'http://abcnews.go.com/US/wireStory/man-jail-writing-racist-graffiti-refugees-homes-33488053'
page = requests.get(url)
tree = html.fromstring(page.text)
p_elements = tree.cssselect('p[itemprop="articleBody"]')
print(p_elements)
输出:
[<Element p at 0xa503ae8>,
<Element p at 0xa503db8>,
<Element p at 0xa503bd8>,
<Element p at 0xa54b1d8>,
<Element p at 0xa54b0e8>,
<Element p at 0xa54b138>,
<Element p at 0xa54b188>]
一般来说,在使用 lxml
时,我发现通过 XPath 选择元素比 CSS 选择器灵活得多。