liilaG 2022-11-25 04:07
浏览 1
已结题

scrapy下载图片后只能保存最后一个item的文本信息

scrapy下载图片后只能保存最后一个item的文本信息

spider部分

import scrapy
from myscrapy.items import musicItem

class doubanAlbumSpider(scrapy.Spider):
    name = "albumspider"
    start_urls = ['https://music.douban.com/tag/%E6%91%87%E6%BB%9A?start=0&type=T']
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36',
    }

    def start_requests(self):
        url = 'https://music.douban.com/tag/%E6%91%87%E6%BB%9A?start=0&type=T'
        yield scrapy.Request(url, headers=self.headers)
    
    def parse(self,response):
        item = musicItem()
        albums = response.xpath(r"//tr[@class='item']")
        for album in albums:
            item['alname'] = " ".join(album.xpath(r"./td/div/a/text()")[0].extract().split())
            item['detailUrl'] = album.xpath(r"./td/a/@href")[0].extract()
            item['imageUrl'] = (r"/m/").join(album.xpath(r"./td/a/img/@src")[0].extract().split(r"/s/"))
            yield(item)

item部分

class musicItem(scrapy.Item):
    alname = scrapy.Field()
    imageUrl = scrapy.Field()
    detailUrl = scrapy.Field()
    image = scrapy.Field()
    image_paths = scrapy.Field()

加入的pipeline

from scrapy.pipelines.images import ImagesPipeline
import scrapy

class DoubanImagePipeline(ImagesPipeline):
    default_headers = {
        'accept': 'image/webp,image/*,*/*;q=0.8',
        'accept-encoding': 'gzip, deflate, sdch, br',
        'accept-language': 'zh-CN,zh;q=0.8,en;q=0.6',
        'cookie': 'bid=yQdC/AzTaCw',
        'referer': 'https://www.douban.com/',
        'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36',
    }
 
    def get_media_requests(self, item, info):
        yield scrapy.Request(url=item['imageUrl'])

在没有添加存储的pipeline时,所有数据都能保存(专辑名,封面url和详情页url),但加入pipeline后虽然图片可以正常下载,但是前面保存的数据都被最后一行覆盖了。

img

img

  • 写回答

0条回答 默认 最新

      报告相同问题?

      问题事件

      • 系统已结题 12月3日
      • 创建了问题 11月25日

      悬赏问题

      • ¥15 为什么我的虚拟机运行配置apache的脚本都会错误,重装也没用
      • ¥15 霍利韦尔软件web station N4的安装密码忘记了能找回吗
      • ¥20 帮电子新生画个仿真图吧🥰
      • ¥25 实验:WordCount案例实践(根据实验指导书编写实验报告。要求:文字加图)
      • ¥20 基于STM32F407设计一个贪食蛇游戏,要求:1有开始 、结束界面,能进行游戏设置,如:界面颜色,蛇移动速度。2蛇体能上下左右移动且在界面能随机生成食物,蛇吃后会变长;3小蛇碰壁死亡,显示游戏结束。
      • ¥15 摁摁钮(接P3.4口)无法实现点阵管播放速度调节,大家能帮我看看是什么问题吗?TAT
      • ¥15 grafna发送告警信息
      • ¥15 51单片机,LCD屏幕内容修改
      • ¥20 Ida Pro动态调试
      • ¥15 TensorFlow深度学习拓展项目