Scrapy爬取图片自定义图片文件名时出现的问题

2023-11-20

目录

 

出现的问题:只下载了一张图片,图片的名称为最后一张图片的名称,但内容并不是最后一张图片的内容。在打印时,最后一张图片的相关信息出现多次。 

对应文件的相关信息:

Items文件相关内容:

Spider文件内容:

Settings文件内容:

Pipeliens文件相关内容:

刚开始我是这样写的,以图片路径的最后一段为文件名称,没有出现什么大问题

但我觉得不好看,打算以它们原本的名称作为文件名

最终的写法,不传入整个item,而是传入item对象中对应的字段内容


出现的问题:只下载了一张图片,图片的名称为最后一张图片的名称,但内容并不是最后一张图片的内容。在打印时,最后一张图片的相关信息出现多次。 


对应文件的相关信息:

Items文件相关内容:

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


class FabiaoqingItem(scrapy.Item):
    # define the fields for your item here like:
    images = scrapy.Field()
    image_urls = scrapy.Field()
    # pass

Spider文件内容:

import scrapy
from first.items import FabiaoqingItem

class FabiaoqingSpider(scrapy.Spider):
    name = 'fabiaoqing'
    # allowed_domains = ['https://www.fabiaoqing.com/']
    start_urls = ['https://www.fabiaoqing.com/biaoqing']

    def parse(self, response):
        # 获取item对象
        item = FabiaoqingItem()
        # 获取所有表情包信息
        imgs = response.css('.tagbqppdiv')
        for img in imgs:
            # 标题
            title = img.css('a::attr(title)').extract()
            # 路径
            src = img.css('a img::attr(data-original)').extract()
            # 将列表内容提取成字符串
            title = ''.join(title)
            src = ''.join(src)
            # print(title, src)
            # 将获取到的内容封装到item对象中
            item['images'] = title
            item['image_urls'] = src
            # 将item提交给管道
            yield item


# 划重点:执行过程中,不报错,也不出结果,找到一个警告:
# WARNING: Disabled FabiaoqingPipeline: ImagesPipeline requires installing Pillow 4.0.0 or later
# 意思就是系统中没有安装Pillow 4.0.0以上的版本,需要手动安装一下:pip install pillow

Settings文件内容:

# Scrapy settings for first project
#
# For simplicity, this file contains only settings considered important or
# commonly used. You can find more settings consulting the documentation:
#
#     https://docs.scrapy.org/en/latest/topics/settings.html
#     https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#     https://docs.scrapy.org/en/latest/topics/spider-middleware.html

# 控制台日志输出级别
import random

# 图片文件保存的目录
IMAGES_STORE = './images'
# 限制日志输出等级
LOG_LEVEL = 'ERROR'

BOT_NAME = 'first'

SPIDER_MODULES = ['first.spiders']
NEWSPIDER_MODULE = 'first.spiders'

# Crawl responsibly by identifying yourself (and your website) on the user-agent
# USER_AGENT = 'first (+http://www.yourdomain.com)'
# 用户代理列表

USER_AGENT_LIST = [
    # Edge
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62',
    # Firefox
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0',
    # Chrome
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
]
# 随机用户代理
USER_AGENT = random.choice(USER_AGENT_LIST)

# Obey robots.txt rules
# ROBOTSTXT_OBEY = True
# 是否遵从robots协议
ROBOTSTXT_OBEY = False

# Configure maximum concurrent requests performed by Scrapy (default: 16)
# CONCURRENT_REQUESTS = 32

# Configure a delay for requests for the same website (default: 0)
# See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
# DOWNLOAD_DELAY = 3
# The download delay setting will honor only one of:
# CONCURRENT_REQUESTS_PER_DOMAIN = 16
# CONCURRENT_REQUESTS_PER_IP = 16

# Disable cookies (enabled by default)
# COOKIES_ENABLED = False

# Disable Telnet Console (enabled by default)
# TELNETCONSOLE_ENABLED = False

# Override the default request headers:
# DEFAULT_REQUEST_HEADERS = {
#   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
#   'Accept-Language': 'en',
# }

# Enable or disable spider middlewares
# See https://docs.scrapy.org/en/latest/topics/spider-middleware.html
# SPIDER_MIDDLEWARES = {
#    'first.middlewares.FirstSpiderMiddleware': 543,
# }

# Enable or disable downloader middlewares
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
# DOWNLOADER_MIDDLEWARES = {
#    'first.middlewares.FirstDownloaderMiddleware': 543,
# }

# Enable or disable extensions
# See https://docs.scrapy.org/en/latest/topics/extensions.html
# EXTENSIONS = {
#    'scrapy.extensions.telnet.TelnetConsole': None,
# }

# Configure item pipelines
# See https://docs.scrapy.org/en/latest/topics/item-pipeline.html
# 项目管道
ITEM_PIPELINES = {
    # 数值越小,优先级越高
    # 'first.pipelines.FirstPipeline': 300,
    # 'first.pipelines.ToMysqlPipeline': 301,
    'first.pipelines.FabiaoqingPipeline': 302,
}

# Enable and configure the AutoThrottle extension (disabled by default)
# See https://docs.scrapy.org/en/latest/topics/autothrottle.html
# AUTOTHROTTLE_ENABLED = True
# The initial download delay
# AUTOTHROTTLE_START_DELAY = 5
# The maximum download delay to be set in case of high latencies
# AUTOTHROTTLE_MAX_DELAY = 60
# The average number of requests Scrapy should be sending in parallel to
# each remote server
# AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
# Enable showing throttling stats for every response received:
# AUTOTHROTTLE_DEBUG = False

# Enable and configure HTTP caching (disabled by default)
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
# HTTPCACHE_ENABLED = True
# HTTPCACHE_EXPIRATION_SECS = 0
# HTTPCACHE_DIR = 'httpcache'
# HTTPCACHE_IGNORE_HTTP_CODES = []
# HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

Pipeliens文件相关内容:

刚开始我是这样写的,以图片路径的最后一段为文件名称,没有出现什么大问题

import scrapy
from scrapy.pipelines.images import ImagesPipeline


class FabiaoqingPipeline(ImagesPipeline):
    """下载发表情网的表情包管道类
    """

    def get_media_requests(self, item, info):
        """对每一个表情包发起请求
        """
        return [scrapy.Request(url=item['image_urls'])]

    def file_path(self, request, response=None, info=None, *, item=None):
        """图片保存的路径(子路径)
        """

        # 以下载路径的最后一段为文件名
        img_name = request.url.split('/')[-1]
        print(img_name)
        return img_name

    def item_completed(self, results, item, info):
        """将item传递给下一个管道类
        """
        return item

打印结果:
ab4b8062gy1gxlavqgxgbj20fb0fbmxu.jpg
008h4Hg2gy1gxb1gzxuz0g309d095nin.gif
ceeb653ely8gxvsn09kndj20g30eodge.jpg
ceeb653ely8gxx3gluh1jg208c06v74o.gif
006APoFYly8gxxjk5ks1fg30c80c8q4r.gif
ceeb653ely8gxvsdnb5orj20g30eojs0.jpg
ceeb653ely8gx8ywsjfthg20e80e84qp.gif
ceeb653ely8gx44pqmmhhj206o06omx9.jpg
006APoFYly8gwzyusrfg7j30oo0lgjt6.jpg
006C7PHRly1gw2df87078g30900904k8.gif
003MWcpMly8gv33zza8pzj608c08g74j02.jpg
ceeb653ely8gx8zv4cgxug2064064mzt.gif
ceeb653ely8gwa4c5uhbrj20j80j6aau.jpg
ceeb653ely8gwx3sekvz5j20j20j275b.jpg
ceeb653ely8gwc75zwiupj20dw0dwq3h.jpg
ceeb653ely8gwbv0zgjt3j20k00k0aao.jpg
ceeb653ely8gvwshx6ufng207u06u74m.gif
006APoFYly8gvxgba126cg308c05a0yc.gif
006GJQvhgy1gvvwkivvpqj328g28g18h.jpg
a6653c0dly1gvw1qv571hg206o062an5.gif
6958e69dgy1gvz2qe32vwj20go0gpgnn.jpg
006APoFYly8gvz9fi8a6uj30hs0hj0ty.jpg
006APoFYly8gwkftnnywag308m0aqqv8.gif
0078qrzmgy1gwdxp8p79sg303m03m74f.gif
006APoFYly8gxd8ufvm23j30j60j6jsa.jpg
ceeb653ely8gw2o2b5f61j20jz0j5dgr.jpg
ceeb653ely8gwlimzamsqg20a00a07nc.gif
ceeb653ely8gw2xy677q7g208w06ogtx.gif
003MWcpMly8gv903csftwg60670674ht02.gif
006Mi9iRgy1guvla2fgdog60ez0g0q9102.gif
0073Cjx6gy1gw262v18waj30th139gqr.jpg
ceeb653ely8gw335ge6jaj20d90hswfj.jpg
006APoFYly8gw12oxpu2yg301e01etca.gif
006APoFYly8gw13bu7ztvj30hs0hswfe.jpg
006APoFYly8gx8ngr1wc0g303403476m.gif
ceeb653ely8gx80qxpxahg20db0dbasj.gif
0068Lfdegy1gwio2wr0rjj30u00u0jv1.jpg
006APoFYly8gw2hau44pdg306o06o74u.gif
ceeb653ely8gx95ui88qwg209806kaac.gif
ceeb653ely8gx90naj760j20ix0njdh5.jpg
006APoFYly8gx901bj2i1g30790797wh.gif
006APoFYly8gx8nbk4948g307k05d4qp.gif
ceeb653ely8gx7ewc23ttg206o06ijtp.gif
ceeb653ely8gvzktgrq7tj206o06oq2y.jpg
0068Lfdegy1gvvi5yqolwj30u00u0djv.jpg

打开文件夹看看吧

共45个,没有问题

但我觉得不好看,打算以它们原本的名称作为文件名

我们先将之前下好的图片删除

return [scrapy.Request(url=item['image_urls'], meta={'item': item})]
import re
import scrapy
from scrapy.pipelines.images import ImagesPipeline


class FabiaoqingPipeline(ImagesPipeline):
    """下载发表情网的表情包管道类
    """

    def get_media_requests(self, item, info):
        """对每一个表情包发起请求
        """
        # return [scrapy.Request(url=item['image_urls'])]
        # 传入meta为后续的自定义文件名做准备
        return [scrapy.Request(url=item['image_urls'], meta={'item': item})]

    def file_path(self, request, response=None, info=None, *, item=None):
        """图片保存的路径(子路径)
        """

        # 以下载路径的最后一段为文件名
        # img_name = request.url.split('/')[-1]
        # print(img_name)
        # return img_name

        # 自定义文件名
        item = request.meta['item']     # 从meta中获取item对象
        img_name = item['images']
        # 有些表情包的名字包含特殊字符,导致不能保存,需要改一改
        img_name = re.sub(r'[\/:*?"<>|\n]', '', img_name)
        # 因为有些是gif,有些是jpg,所以文件后缀不能写死
        img_type = request.url.split('.')[-1]
        img_path = img_name + '.' + img_type
        print(img_path)
        return img_path

    def item_completed(self, results, item, info):
        """将item传递给下一个管道类
        """
        return item

打印结果:
我他妈创死你.jpg
你爹来啰.gif
叫我一声宝贝跨年你就不是一个人了.jpg
2022一定暴富(熊猫头表情包).gif
已经2022年了.gif
叫我一声老婆跨年你就不是一个人了.jpg
你爹来咯 你爹来啰.gif
下次失眠时再见哦.jpg
我虽然卷但我还是菜.jpg
派大星Q弹の屁股 快跑.gif
你想破我防.jpg
敲你脑袋动图表情包.gif
干啥啥不行网上冲浪第一名.jpg
很黄的菜狗.jpg
指腚行!(指定行).jpg
无语蛋(滴汗表情包).jpg
我真的很想融入你们但是我要加班.gif
上号 英雄联盟手游熊猫头表情包.gif
恭喜你!你已被困困猫造访啦!从现在开始不管你在干什么你都会困得京不开眼!.jpg
为我们的无语干杯.gif
你这么可爱我一定要敲这样我就是敲可爱的.jpg
宝贝嘴一个开心s啦(库洛米表情包).jpg
老婆 开门 是我 我回来了 开个门吧 啊?没有喝酒呀 心虚 修勾敲门表情包.gif
滴汗小黄脸圣诞衣圣诞帽表情包.gif
2022一定能恋爱 熊猫头表情包.jpg
满眼都是你你你你.jpg
臭屁攻击.gif
少爷小姐起床啦.gif
3d指人表情包  警告1次.gif
挠痒痒挠屁股动图表情包.gif
达咩色色.jpg
被指到的人做三个提肛运动就现在.jpg
猫咪探头观察 GIF 动图表情包.gif
你看又生气了.jpg
无语 滴汗表情包.gif
Ji 坏蛋坏蛋大坏蛋.gif
没人喜欢我.jpg
雀跃的小腿跳起来 GIF 动图.gif
1)60这话里有话啊(微信聊天框表情包).gif
莓事(水果谐音表情包).jpg
波吉大哭动图表情包.gif
抱抱充电.gif
伤心蛙给你一拳.gif
群伸手党时不时来白嫖表情(群聊表情包).jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.jpg
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif
妈!大嘴猫表情包.gif

 可以看见,一个很奇怪的现象,前44张图片正常,但在45张图片时出现了大量重复,更重要的是,只下载了2张图片,我们来看看

文件名为最后一张图片的名字,并且,文件名跟内容对应不上

最终的写法,不传入整个item,而是传入item对象中对应的字段内容

return [scrapy.Request(url=item['image_urls'], meta={'images': item['images']})]
import re
import scrapy
from scrapy.pipelines.images import ImagesPipeline


class FabiaoqingPipeline(ImagesPipeline):
    """下载发表情网的表情包管道类
    """

    def get_media_requests(self, item, info):
        """对每一个表情包发起请求
        """
        # return [scrapy.Request(url=item['image_urls'])]
        # 传入meta为后续的自定义文件名做准备
        # return [scrapy.Request(url=item['image_urls'], meta={'item': item})]
        return [scrapy.Request(url=item['image_urls'], meta={'images': item['images']})]

    def file_path(self, request, response=None, info=None, *, item=None):
        """图片保存的路径(子路径)
        """

        # 以下载路径的最后一段为文件名
        # img_name = request.url.split('/')[-1]
        # print(img_name)
        # return img_name

        # # 自定义文件名
        # item = request.meta['item']     # 从meta中获取item对象
        # img_name = item['images']
        # # 有些表情包的名字包含特殊字符,导致不能保存,需要改一改
        # img_name = re.sub(r'[\/:*?"<>|\n]', '', img_name)
        # # 因为有些是gif,有些是jpg,所以文件后缀不能写死
        # img_type = request.url.split('.')[-1]
        # img_path = img_name + '.' + img_type
        # print(img_path)
        # return img_path

        # 这样就可以,奇怪
        img_name = request.meta['images']
        # 有些表情包的名字包含特殊字符,导致不能保存,需要改一改
        img_name = re.sub(r'[\/:*?"<>|\n]', '', img_name)
        # 因为有些是gif,有些是jpg,所以文件后缀不能写死
        img_type = request.url.split('.')[-1]
        img_path = img_name + '.' + img_type
        print(img_path)
        return img_path

    def item_completed(self, results, item, info):
        """将item传递给下一个管道类
        """
        return item

打印结果:
我他妈创死你.jpg
你爹来啰.gif
叫我一声宝贝跨年你就不是一个人了.jpg
2022一定暴富(熊猫头表情包).gif
已经2022年了.gif
叫我一声老婆跨年你就不是一个人了.jpg
你爹来咯 你爹来啰.gif
下次失眠时再见哦.jpg
我虽然卷但我还是菜.jpg
派大星Q弹の屁股 快跑.gif
你想破我防.jpg
敲你脑袋动图表情包.gif
干啥啥不行网上冲浪第一名.jpg
很黄的菜狗.jpg
指腚行!(指定行).jpg
无语蛋(滴汗表情包).jpg
我真的很想融入你们但是我要加班.gif
上号 英雄联盟手游熊猫头表情包.gif
恭喜你!你已被困困猫造访啦!从现在开始不管你在干什么你都会困得京不开眼!.jpg
为我们的无语干杯.gif
你这么可爱我一定要敲这样我就是敲可爱的.jpg
宝贝嘴一个开心s啦(库洛米表情包).jpg
老婆 开门 是我 我回来了 开个门吧 啊?没有喝酒呀 心虚 修勾敲门表情包.gif
滴汗小黄脸圣诞衣圣诞帽表情包.gif
2022一定能恋爱 熊猫头表情包.jpg
满眼都是你你你你.jpg
臭屁攻击.gif
少爷小姐起床啦.gif
3d指人表情包  警告1次.gif
挠痒痒挠屁股动图表情包.gif
达咩色色.jpg
被指到的人做三个提肛运动就现在.jpg
猫咪探头观察 GIF 动图表情包.gif
你看又生气了.jpg
无语 滴汗表情包.gif
Ji 坏蛋坏蛋大坏蛋.gif
没人喜欢我.jpg
雀跃的小腿跳起来 GIF 动图.gif
1)60这话里有话啊(微信聊天框表情包).gif
莓事(水果谐音表情包).jpg
波吉大哭动图表情包.gif
抱抱充电.gif
伤心蛙给你一拳.gif
群伸手党时不时来白嫖表情(群聊表情包).jpg
妈!大嘴猫表情包.jpg
我他妈创死你.jpg
我他妈创死你.jpg
叫我一声宝贝跨年你就不是一个人了.jpg
叫我一声宝贝跨年你就不是一个人了.jpg
2022一定暴富(熊猫头表情包).gif
2022一定暴富(熊猫头表情包).gif
已经2022年了.gif
已经2022年了.gif
你爹来啰.gif
你爹来啰.gif
你看又生气了.jpg
你看又生气了.jpg
Ji 坏蛋坏蛋大坏蛋.gif
Ji 坏蛋坏蛋大坏蛋.gif
雀跃的小腿跳起来 GIF 动图.gif
雀跃的小腿跳起来 GIF 动图.gif
没人喜欢我.jpg
没人喜欢我.jpg
达咩色色.jpg
达咩色色.jpg
下次失眠时再见哦.jpg
下次失眠时再见哦.jpg
你想破我防.jpg
你想破我防.jpg
我真的很想融入你们但是我要加班.gif
我真的很想融入你们但是我要加班.gif
滴汗小黄脸圣诞衣圣诞帽表情包.gif
滴汗小黄脸圣诞衣圣诞帽表情包.gif
无语蛋(滴汗表情包).jpg
无语蛋(滴汗表情包).jpg
很黄的菜狗.jpg
很黄的菜狗.jpg
干啥啥不行网上冲浪第一名.jpg
干啥啥不行网上冲浪第一名.jpg
2022一定能恋爱 熊猫头表情包.jpg
2022一定能恋爱 熊猫头表情包.jpg
宝贝嘴一个开心s啦(库洛米表情包).jpg
宝贝嘴一个开心s啦(库洛米表情包).jpg
你爹来咯 你爹来啰.gif
你爹来咯 你爹来啰.gif
叫我一声老婆跨年你就不是一个人了.jpg
叫我一声老婆跨年你就不是一个人了.jpg
你这么可爱我一定要敲这样我就是敲可爱的.jpg
你这么可爱我一定要敲这样我就是敲可爱的.jpg
挠痒痒挠屁股动图表情包.gif
挠痒痒挠屁股动图表情包.gif
我虽然卷但我还是菜.jpg
我虽然卷但我还是菜.jpg
被指到的人做三个提肛运动就现在.jpg
被指到的人做三个提肛运动就现在.jpg
指腚行!(指定行).jpg
指腚行!(指定行).jpg
恭喜你!你已被困困猫造访啦!从现在开始不管你在干什么你都会困得京不开眼!.jpg
恭喜你!你已被困困猫造访啦!从现在开始不管你在干什么你都会困得京不开眼!.jpg
群伸手党时不时来白嫖表情(群聊表情包).jpg
群伸手党时不时来白嫖表情(群聊表情包).jpg
莓事(水果谐音表情包).jpg
莓事(水果谐音表情包).jpg
满眼都是你你你你.jpg
满眼都是你你你你.jpg
1)60这话里有话啊(微信聊天框表情包).gif
1)60这话里有话啊(微信聊天框表情包).gif
无语 滴汗表情包.gif
无语 滴汗表情包.gif
猫咪探头观察 GIF 动图表情包.gif
猫咪探头观察 GIF 动图表情包.gif
伤心蛙给你一拳.gif
伤心蛙给你一拳.gif
上号 英雄联盟手游熊猫头表情包.gif
上号 英雄联盟手游熊猫头表情包.gif
敲你脑袋动图表情包.gif
敲你脑袋动图表情包.gif
为我们的无语干杯.gif
为我们的无语干杯.gif
少爷小姐起床啦.gif
少爷小姐起床啦.gif
派大星Q弹の屁股 快跑.gif
派大星Q弹の屁股 快跑.gif
波吉大哭动图表情包.gif
波吉大哭动图表情包.gif
抱抱充电.gif
抱抱充电.gif
3d指人表情包  警告1次.gif
3d指人表情包  警告1次.gif
臭屁攻击.gif
臭屁攻击.gif
老婆 开门 是我 我回来了 开个门吧 啊?没有喝酒呀 心虚 修勾敲门表情包.gif
老婆 开门 是我 我回来了 开个门吧 啊?没有喝酒呀 心虚 修勾敲门表情包.gif

这一次打印的结果更加奇怪,基本上是每一个都出现了重复

但是!更奇怪的是,结果竟然没有问题,我们来看看

 共45个项目,数量上没有问题,文件名也是自定义的,是它们原来的名称,内容也没有问题,是一一对应的,就很莫名其妙!

明明从上到下都是问题,但偏偏结果没有问题。


从某种意义上来讲,问题已经解决了,但又没完全解决。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scrapy爬取图片自定义图片文件名时出现的问题 的相关文章

  • Lighttpd 和 cgi python

    我正在尝试通过 lighttpd 执行一些 python 脚本 但是当我尝试运行它时 我只得到一个要求我下载的空白文件 lighttpd conf server modules mod access mod alias mod access
  • 使用 python requests 模块时出现 HTTP 503 错误

    我正在尝试发出 HTTP 请求 但当前可以从 Firefox 浏览器访问的网站响应 503 错误 代码本身非常简单 在网上搜索一番后我添加了user Agent请求参数 但也没有帮助 有人能解释一下如何消除这个 503 错误吗 顺便说一句
  • 在 django ORM 中查询时如何将 char 转换为整数?

    最近开始使用 Django ORM 我想执行这个查询 select student id from students where student id like 97318 order by CAST student id as UNSIG
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • 使用字典映射数据帧索引

    为什么不df index map dict 工作就像df column name map dict 这是尝试使用index map的一个小例子 import pandas as pd df pd DataFrame one A 10 B 2
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • 使用for循环时如何获取前一个元素? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 循环内的上一个和下一个值 https stackoverflow com questions 1011938 python previous and next values inside
  • 模拟pytest中的异常终止

    我的多线程应用程序遇到了一个错误 主线程的任何异常终止 例如 未捕获的异常或某些信号 都会导致其他线程之一死锁 并阻止进程干净退出 我解决了这个问题 但我想添加一个测试来防止回归 但是 我不知道如何在 pytest 中模拟异常终止 如果我只
  • 如何应用一个函数 n 次? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 假设我有一个函数 它接受一个参数并返回相同类型的结果 def increment x return x 1 如何制作高阶函数repeat可以

随机推荐

  • UE4 使蓝图连接线出现小箭头标志

    当我们写的蓝图杂乱无章 甚至不能看清执行顺序的时候 只需要在偏好设置里设置一下就可以清晰的看清蓝图的执行顺序
  • 区块链+物联网 BOT

    不可否认 我们的一只脚已经迈入万物智联时代 但另一只脚迈入还存在一定的阻碍 区块链技术的出现将会促进这一进程的发展 智能音响 主人你好 我是小Q 现在是早上08点29分 上班时间要到咯 智能门锁 主人你摔疼我了 你总是这样匆忙 下次赶紧麻溜
  • 安装Python第三方库

    视频版教程 Python3零基础7天入门实战视频教程 在Python的标准安装中 包含了一组自带的模块 这些模块被成为 标准库 比如常用的math random datetime os json等等 此外 还有很多的第三方模块 或者叫做库也
  • 若以框架 vue富文本字符串中获取图片的存储路径

    若依的富文本 字符串是上述格式 我们要获取以下格式 就是图片的存储路径 有几个步骤 第一步 main js中添加两行代码 import axios from axios Vue prototype axios axios 第二步 Edit包
  • Python 笔记 — 单例模式和魔术方法

    目录 一 单例模式 1 概念 2 优点 3 使用 4 实现方法 5 运用 6 内存地址 7 通过 new 实现 8 通过 classmethod 9 通过装饰器实现 10 通过导入模块时实现 11 hasattr 函数 12 getattr
  • 内存管理——分页分段

    一 分页存储管理 1 页面与页框 1 页面 将一个进程的逻辑地址空间分成若干个大小相等的片 称为页面或页 并为各页加以编号 2 页框 相应于页面 把内存空间分成和页面相同大小的若干个存储块 称为 物理 块或页框 frame 3 页内碎片 在
  • Android中项目中各个文件夹的含义和用途详解

    1 src 存放所有的 java源程序 2 gen 为ADT插件自动生成的代码文件保存路径 里面的R java将保存所有的资源ID 3 assets 可以存放项目一些较大的资源文件 例如 图片 音乐 字体等 4 res 可以存放项目中所有的
  • IntelliJ IDEA 2022.3 版本 IDAE 的Java 编译器错误问题解决方法

    2022 2 3 版本 IDAE 的Java 编译器错误问题解决方法 如果这是按照以前的办法就是去更改下面 的内容就可以OK了 但是在最新版中无论怎么修改都是无用 不知道为啥 随后我就在这里 是的就是上面 的第二张图中 将11 versio
  • 设计模式——State(状态)模式

    目录 前言 1 定义 2 适用性 3 结构 3 1 结构图 3 2 参与者 4 应用举例 4 1 State TcpState 4 2 Context TcpConnection 4 3 ConcreteState ListeningTcp
  • 生产环境的域名地址与后端给的接口地址不一样时的配置(vue)

    1 找到 config dev env js 文件 module exports merge prodEnv NODE ENV development API ROOT http com 本地开发时用的域名 2 找到 config prod
  • 不在傻傻for循环!完美解决JPA批量插入问题

    前言 jpa在简单的增删改查方面确实帮助我们节省了大部分时间 但是面对复杂的情况就显得心有余而力不足了 最近遇到一个批量插入的情况 jpa虽然提供了saveAll方法 但是底层还是for循环save 如果遇到大量数据插入频繁与数据库交互必然
  • WIN11

    WIN11 安装WSL2 在WSL2上跑pytorch gpu 远程连接WSL2 个人电脑的关键配置 显卡是RTX3090 系统是WIN11 由于买的是整机 所以刚开机就装好了驱动 本人没有再进行显卡驱动 同时包含了wsl中的驱动 的安装
  • Android Log系统介绍 (基于Android N)

    原文使用有道云笔记创作 看这个 http note youdao com noteshare id 82f88b1c82652b80c27d54aad55af035 引言 gt Android 的log 从操作系统分层上来讲 可以分为 Ke
  • Linux内核驱动之GPIO子系统(一)GPIO的使用

    分类 Linux内核驱动 2012 10 31 21 12 162人阅读 评论 1 收藏 举报 目录 一 概述 Linux内核中gpio是最简单 最常用的资源 和 interrupt dma timer一样 驱动程序 应用程序都能够通过相应
  • Subwords Tokenizer方法介绍: BPE, Byte-level BPE, WordPiece, Unigram, SentencePiece

    参考于transformers tokenizer的文档 目录 Byte Pair Encoding BPE 1 出发点 原理 应用 Byte level BPE 2 出发点 原理 应用 WordPiece 3 原理 应用 Unigram
  • 一种踩内存的定位方法(C++)

    在嵌入式应用开发过程中 踩内存的问题常常让人束手无策 使用gdb调试工具 可以大幅加快问题的定位 不过 对于某些踩内存的问题 它的表现是间接的 应用崩溃的位置也是不固定的 这就给问题定位带来了更大的困难 笔者见过带有虚函数C 的类对象在试图
  • 2021春招已正式开启,阿里巴巴企业智能事业部内推,有意者看下文!

    前言 说一说已经拿到内推的两个朋友的面试经验 你们可以看一下准备一下 同事A阿里巴巴一面 55分钟 先介绍一下自己吧 说一下自己的优缺点 具体讲一下之前做过的项目 你觉得项目里给里最大的挑战是什么 Hashmap为什么不用平衡树 AQS知道
  • 程序员要不断学习

    2016 10 20 计算机技术的发展速度还是很快的 当个人电脑赶上10年前的超算时 我们不得不感叹硬件的发展编程开发带来了很大的影响 对世界带来了很大的影响 知识和工具的更新速度还是比较快的 这就要求程序员始终需要学习 我在知乎上看到一个
  • redis 配置与优化

    目录 一 关系数据库和非关系型数据库 二 关系型数据库和非关系型数据库区别 三 非关系型数据库产生背景 四 redis 1 概念 2 redis的优点 3 redis为什么这么快 五 redis安装与配置 一 关系数据库和非关系型数据库 关
  • Scrapy爬取图片自定义图片文件名时出现的问题

    目录 出现的问题 只下载了一张图片 图片的名称为最后一张图片的名称 但内容并不是最后一张图片的内容 在打印时 最后一张图片的相关信息出现多次 对应文件的相关信息 Items文件相关内容 Spider文件内容 Settings文件内容 Pip