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

1 投票
1 回答
3753 浏览
提问于 2025-04-18 03:38

我正在用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 的。希望这对你有帮助。

撰写回答