我正在试着从trustpilot.com上刮掉评级。
可以使用scrapy提取类名吗?我试图抓取一个由五个单独的图像组成的评级,但这些图像在一个带有评级名称的类中,例如,如果评级是2,则开始:
<div class="star-rating count-2 size-medium clearfix">...如果是3星,那么:
<div class="star-rating count-3 size-medium clearfix">...那么,有没有一种方法可以在假设像.css('.star-rating')这样的选择器的情况下抓取count-2或count-3类呢
发布于 2018-02-09 02:44:09
您可以在代码中的某处使用这两者的组合:
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))发布于 2018-02-09 08:17:22
您可以使用re_first()和re()直接提取评级
for rating in response.xpath('//div[contains(@class, "star-rating")]/@class').re(r'count-(\d+)'):
print(rating)发布于 2018-10-18 06:54:37
我也有类似的问题。使用scrapy v1.5.1,我可以按名称提取元素的属性。下面是在Lowes上使用的一个示例;我对class属性执行了相同的操作
for product in response.css('ul.product-cards-grid li.product-wrapper'):
prod_href = p.css('li::attr(data-producturl)').extract()
prod_name = p.css('li::attr(data-producttitle)').extract_first()
prod_img = p.css('li::attr(data-productimg)').extract_first()
prod_id = p.css('li::attr(data-productid)').extract_first()https://stackoverflow.com/questions/48692446
复制相似问题