lxml.cssselect CSSSelector不支持属性

时间:2015-09-02 20:43:58

标签: python css-selectors lxml

我试图解析HTML页面并获取具有特定属性的项目。我正在使用lxml.cssselect来完成这项工作。

我似乎无法使用属性选择器。以下选择器:p[itemprop="articleBody"]this page上不返回任何内容。使用Firefox或Chrome中的相同选择器。

当我尝试没有属性的选择器时,它们可以正常工作。

我使用html翻译器创建了CSSSelector。

lxml.cssselect不支持这种选择器吗?我无法在文档中找到任何对它的引用。

1 个答案:

答案 0 :(得分:1)

我没有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选择器更灵活。