获取站长素材的图片
问题描述:试图用下面的方法传递图片名称,结果图片下载仅有一张;在源文件中打印图片名和链接全部正常,在管道类的file_path方法中打印图片名,图片名可以打印,但是最后一个图片名称重复多次
我知道可以通过请求传参的方式传递图片名称,只是单纯想知道如下代码问题在哪,谢谢各位大神
源文件中代码
import scrapy
from ImagesPro.items import ImagesproItem
class ImgSpider(scrapy.Spider):
name = 'img'
allowed_domains = ['www.xxx.com']
start_urls = ['https://sc.chinaz.com/tupian/']
def parse(self, response):
div_list = response.xpath('//div[@id="container"]/div')
for div in div_list:
divUrl = 'https:' + div.xpath('./div/a/img/@src2').extract()[0]
imgName = div.xpath('./div/a/@alt').extract()[0]
item = ImagesproItem()
item['imgUrl'] = divUrl
item['imgName'] = imgName
yield item
管道类中代码
class ImgPipeline(ImagesPipeline):
item = ''
# 对图片进行请求操作
def get_media_requests(self, item, info):
self.item = item['imgName'] #试图通过self方法传参
yield scrapy.Request(item['imgUrl'])
# 定制图片名称
def file_path(self, request, response=None, info=None, *, item=None):
# file_name = request.url.split('/')[-1]
file_name = self.item + '.jpg'
# print(file_name)
return file_name
def item_completed(self, results, item, info):
return item # 将返回值传递给下一个被执行的管道类