在scrapy中提取类名

时间:2018-02-08 18:30:08

标签: python web-scraping css-selectors scrapy

我正试图从trustpilot.com上剔除评级。

是否可以使用scrapy提取类名?我试图刮取一个由五个单独的图像组成的评级,但图像是在一个具有评级名称的类中,例如,如果评级是2开始那么:

<div class="star-rating count-2 size-medium clearfix">...

如果是3星那么:

<div class="star-rating count-3 size-medium clearfix">...

有没有一种方法可以抓住课程count-2count-3,假设选择器为.css('.star-rating')

3 个答案:

答案 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