python - 在scrapy选择器上使用正则表达式
问题描述
我正在从这个谷歌页面抓取数据:
为了获得评论,我没有任何问题,因为所有评论都在一个名为“review-full-text”的类中,那么我只是使用这个 xpath 来获取它们:
review.xpath('//*[@class="review-full-text"]//text()').extract()
但是也需要得到响应,在这种情况下,类的名称是不一致的,例如对于第一次审查,响应在类中:
LfKETd r-id3h0OaXd7RA
但是对于第二个,类名是:
LfKETd r-iGpfKJm1EL2o
其中名称的第一部分固定为“LfKETd r-”,其余部分针对每个响应进行更改。是否可以在 xpath 中使用正则表达式,例如:“LfKETd r-.*”或任何其他方式来匹配每个响应的类名?
解决方案
这是您应该使用的 xpath。
//div[starts-with(@class,'LfKETd r-')]
通过始终使用它,您可以检查类的第一部分,而不必担心动态部分。
推荐阅读
- microsoft-graph-api - Microsoft Graph API:设置常规通道设置
- javascript - 向“DOMNodeInserted”事件添加了同步 DOM 突变侦听器。JavaScript
- azure - 从 GSuite 目录预配 Azure AD
- openssl - mbedTLS ECDH 曲线 25519 和 openSSL
- google-home - 创建 Google 操作
- javascript - 在反应js中单击确认警报后如何在页面中显示消息
- python - Matplotlib 更精确的 python
- python-3.x - 遍历文件夹以打开特定类型的文件
- javascript - 移动标记后在弹出窗口中查看 latlng
- mono - 无法为 Ubuntu 18.04 获取/安装最新的单声道版本