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 python的EOFError该怎么解决?
  • ¥15 SSMS-Setup-CHS安装程序双击没反应
  • ¥15 Fluent,液体进入旋转区域体积分数不连续
  • ¥15 课上突考,本人大脑过载,求51单片机能手
  • ¥15 java linux下将docx文件转pdf
  • ¥15 maven无法下载依赖包
  • ¥15 关于pycharm, Callable[[str],bool]作为方法参数使用时, lambda 类型不提示问题
  • ¥15 layui数据重载无效
  • ¥15 寻找了解qq家园纵横四海的程序猿。
  • ¥15 optisystem