首页 > 解决方案 > 在scrapy选择器上使用正则表达式

问题描述

我正在从这个谷歌页面抓取数据:

为了获得评论,我没有任何问题,因为所有评论都在一个名为“review-full-text”的类中,那么我只是使用这个 xpath 来获取它们:

review.xpath('//*[@class="review-full-text"]//text()').extract()

但是也需要得到响应,在这种情况下,类的名称是不一致的,例如对于第一次审查,响应在类中:

LfKETd r-id3h0OaXd7RA

但是对于第二个,类名是:

LfKETd r-iGpfKJm1EL2o

其中名称的第一部分固定为“LfKETd r-”,其余部分针对每个响应进行更改。是否可以在 xpath 中使用正则表达式,例如:“LfKETd r-.*”或任何其他方式来匹配每个响应的类名?

标签: pythonxpathscrapy

解决方案


这是您应该使用的 xpath。

//div[starts-with(@class,'LfKETd r-')]

通过始终使用它,您可以检查类的第一部分,而不必担心动态部分。


推荐阅读