qq_45617279 2021-07-04 11:58 采纳率: 0%
浏览 34

使用scrapy请求图片,自定义传递图片名称,结果存在问题,不知道问题出在哪?

获取站长素材的图片
问题描述:试图用下面的方法传递图片名称,结果图片下载仅有一张;在源文件中打印图片名和链接全部正常,在管道类的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 # 将返回值传递给下一个被执行的管道类
  • 写回答

2条回答 默认 最新

  • weixin_45864635 2021-07-04 12:36
    关注

    感觉和人家讲的偏离好多 优酷里有个讲imagepipeline的

    评论

报告相同问题?

悬赏问题

  • ¥15 逐月累计,月份不连续,补齐月份
  • ¥15 应用简单的Python代码完成一个学生成绩管理系统
  • ¥15 用matlab求微分方程初值问题
  • ¥15 vscode下编写第三方库opencv与pcl代码时没有代码提示
  • ¥15 能够跑通不报错,如何解决?(标签-matlab)
  • ¥15 MOS在RDS较大,频率高时开关波形异常
  • ¥15 SCENIC分析报错求解答
  • ¥15 ceph初始化mon不成功 下图不报错 这个是什么元
  • ¥15 数学建模数学建模少ai
  • ¥35 这个等效电路图是什么意思?(答疑)(有没有不是chat的,我就是在chat搜不到才来问的,chat还开了VIP)(可以追加酬金)