我正试图从trustpilot.com上剔除评级。
是否可以使用scrapy提取类名?我试图刮取一个由五个单独的图像组成的评级,但图像是在一个具有评级名称的类中,例如,如果评级是2开始那么:
<div class="star-rating count-2 size-medium clearfix">...
如果是3星那么:
<div class="star-rating count-3 size-medium clearfix">...
有没有一种方法可以抓住课程count-2
或count-3
,假设选择器为.css('.star-rating')
?
答案 0 :(得分:2)
您可以在代码中的某处使用两者的组合:
import re
classes = response.css('.star-rating').xpath("@class").extract()
for cls in classes:
match = re.search(r'\bcount-\d+\b', cls)
if match:
print("Class = {}".format(match.group(0))
答案 1 :(得分:2)
您可以使用re_first()
和re()
直接提取评分:
for rating in response.xpath('//div[contains(@class, "star-rating")]/@class').re(r'count-(\d+)'):
print(rating)
答案 2 :(得分:-1)
我有一个类似的问题。使用scrapy v1.5.1,我可以按名称提取元素的属性。这是在Lowes上使用的示例;我对lst[x][y]
属性做了同样的操作
class