我试图使用lxml.html和使用CSSSelector而不是XPath来解析下面给出的HTML代码。link = doc.cssselect('html body div.results dl dt a)
上面的代码将我的content-1和content-2作为输出,但我想要的输出是link 1 link 2。所以我用替换了我的代码
link = doc.cssselect('html body div.results dl dt a[href]')
但仍然得到相同的产出。所以我的问题是,获取href属性的正确CSS选择器是什么。
最佳答案:
我相信你不能通过css选择器得到属性值。你应该得到元素…>>> elements = doc.cssselect('div.results dl dt a')
…然后从中获取属性:
>>> for element in elements:
... print element.get('href')
...
/link 1
/link 2
当然,列表理解是你的朋友:
>>> [element.get('href') for element in elements]
['/link 1', '/link 2']
由于您不能更新CSS中属性的属性,我相信通过CSS选择器获取它们是没有意义的。您可以在CSS选择器中“提到”属性,以便只检索与其元素匹配的属性。然而,IS只是一种思考,我可能是错的;如果我是错的,请有人纠正我:)好吧,@tim diggs在下面证实了我的假设:)