如何在lxml中使用cssselect选择具有确切类的元素?

时间:2014-04-21 18:20:59

标签: python web-scraping lxml

我正在用lxml html抓取一个网页,但我遇到了问题。 当我选择HTML时,例如:

 html.cssselect('a.asig')

我必须使用class =“asig”获取元素,但是选择还会在其id中打印包含“asig”的元素,例如:

<a class="asig drcha" ...>

我只能获取带有“asig”的元素而不是包含asig的元素? 谢谢!

1 个答案:

答案 0 :(得分: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的用法。希望这会有所帮助。