如何在lxml中使用cssselect精确选择具有特定类的元素?
我正在用lxml html抓取一个网页,但遇到了问题。
当我选择HTML内容时,比如:
html.cssselect('a.asig')
我想获取类名为"class='asig'"的元素,但选择的结果却也打印出了那些ID里包含“asig”的元素,比如:
<a class="asig drcha" ...>
我该怎么做才能只获取类名为“asig”的元素,而不包括那些ID里有“asig”的元素呢?谢谢!
1 个回答
4
可以使用 html.xpath
,然后根据需要进行调整,或者在声明要查找的类时要非常明确。请看下面的代码。
from lxml import html
sample = '<?xml version="1.0" encoding="UTF-8"?><root><a class="asig">I am the correct one.</a><a class="asig drcha">I am the wrong one.</a></root>'
tree = html.fromstring(sample)
print tree.xpath("//a[@class='asig']/text()")[0]
print tree.cssselect("a[class='asig']")[0].text
结果如下:
I am the correct one.
I am the correct one.
[Finished in 0.2s]
注意最后一行是如何使用 cssselect
的。希望这对你有帮助。