鱼C论坛

 找回密码
 立即注册
查看: 1328|回复: 18

用的def item_completed()改的文件名,不知道为什么就报错了

[复制链接]
发表于 2018-11-1 23:03:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我用的def item_completed(self, results, item, info)吧图片名改成用户发送的消息,不知道为什么改不了,图片能下载下来,但是是名字还是默认的

cmd一直提示找不到指定路径

跪求大佬看看哪里的问题

下载图片:
31T_KLVCX]XYDTB@AORKRLK.png

import os
import scrapy
# 导入python模块库里的处理图片模块
from scrapy.pipelines.images import ImagesPipeline
# 同级别下的'settings.py'文件里'IMAGES_STORE'图片保存目录对象;'as'另外赋值
from Qiushibaike.settings import IMAGES_STORE as images_store

class QiushibaikePipeline(ImagesPipeline):
    # 发送读取二进制请求
    def get_media_requests(self, item, info):
        image_link = item['img']
        yield scrapy.Request('https:' + image_link)

    # 更改下载图片名方法
    def item_completed(self, results, item, info):

        image_path = [x['path'] for ok,x in results if ok]

        # 'os.rename'修改文件名函数
        # 'images_store'即写的图片存放目录
        # 'image_path[0]'即
        os.rename(images_store + image_path[0],images_store + item['name'] + '.jpg')
        return item


报错:
错误.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-11-1 23:09:40 | 显示全部楼层
用的scrapy框架爬的,能正常爬下来就是名字改不了。

因该不是前面文件代码问题,可能是这个代码的问题吧
os.rename(images_store + image_path[0],images_store + item['nickname'] + '.jpg')

就是看不出来啥问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-1 23:16:04 | 显示全部楼层
923204485 发表于 2018-11-1 23:09
用的scrapy框架爬的,能正常爬下来就是名字改不了。

因该不是前面文件代码问题,可能是这个代码的问题吧 ...

没看错应该是文件名的编码问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-1 23:23:30 | 显示全部楼层
wongyusing 发表于 2018-11-1 23:16
没看错应该是文件名的编码问题。

兄弟,文件名编码怎么解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-1 23:24:57 | 显示全部楼层
923204485 发表于 2018-11-1 23:23
兄弟,文件名编码怎么解决

我跟着视频做的,他的也是中文文件名就没事。只不过我的中文文件名有的标点符号多了点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-1 23:29:16 | 显示全部楼层
923204485 发表于 2018-11-1 23:24
我跟着视频做的,他的也是中文文件名就没事。只不过我的中文文件名有的标点符号多了点

我没看错的话\u200b是空格来的。你的文件名有空格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-1 23:36:00 | 显示全部楼层
wongyusing 发表于 2018-11-1 23:29
我没看错的话%u200b是空格来的。你的文件名有空格

为什么有空格就不行,我在桌面创建加空格也可以啊。

是因为python跟电脑识别不一样才提示找不到路径?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-1 23:41:32 | 显示全部楼层
wongyusing 发表于 2018-11-1 23:29
我没看错的话%u200b是空格来的。你的文件名有空格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-1 23:42:31 | 显示全部楼层
923204485 发表于 2018-11-1 23:36
为什么有空格就不行,我在桌面创建加空格也可以啊。

是因为python跟电脑识别不一样才提示找不到路径?

你写个if或try吧。  
如果报错,就replace‘\u200b’后,再保存就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-1 23:43:34 | 显示全部楼层

_C$T}OQCP%44EQQT0N3C9RU.png

这是网页源码上显示的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-1 23:49:05 | 显示全部楼层
wongyusing 发表于 2018-11-1 23:42
你写个if或try吧。  
如果报错,就replace‘%u200b’后,再保存就好了
os.rename(images_store + image_path[0],images_store + item['name'] + '.jpg')

兄弟,这里怎么写try,报错这个我学的不是特别好

能麻烦写个,借鉴下成不
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-2 00:03:29 | 显示全部楼层
写if也行啊。  
我随便写啊,没测试过,在windows上不想测试,字体太难看了
if item['name'].has('\u200b'):
    name = item['name'].replace('\u200b')
else:
    os.rename(images_store + image_path[0],images_store + item['name'] + '.jpg')
大概就上面这样写,就提供思路,代码就不测试了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-2 00:15:41 | 显示全部楼层
wongyusing 发表于 2018-11-2 00:03
写if也行啊。  
我随便写啊,没测试过,在windows上不想测试,字体太难看了

是hash()函数么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-2 00:20:03 | 显示全部楼层

好吧,我随便写的,写成ruby了。  
自行谷歌 python 字符串包含
你就得到你想要的答案了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-2 00:45:52 | 显示全部楼层
wongyusing 发表于 2018-11-2 00:20
好吧,我随便写的,写成ruby了。  
自行谷歌 python 字符串包含
你就得到你想要的答案了

好了,兄弟你看下行不,我测试不报错了

111.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-2 00:50:29 | 显示全部楼层
923204485 发表于 2018-11-2 00:45
好了,兄弟你看下行不,我测试不报错了

其实用try比较好
没记错性能比if好。  
不过没所谓了。后面学到再说吧。  

运行成功就行了。不过又有一个问题了。假如来了其它一些特殊字符呢,例如gbk的零(很像大写的O)
回头补一下try的知识。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-2 00:53:28 | 显示全部楼层
wongyusing 发表于 2018-11-2 00:50
其实用try比较好
没记错性能比if好。  
不过没所谓了。后面学到再说吧。  

不报错但是名字改不了了,还是原来的名字

22222222222222.png


cmd 返回信息
33333333333333333333$)Q_K.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-2 00:58:05 | 显示全部楼层
给你看一下,我以前的失败品是怎么改名字的
https://fishc.com.cn/thread-108352-1-1.html
睡觉了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-2 01:00:28 | 显示全部楼层
wongyusing 发表于 2018-11-2 00:58
给你看一下,我以前的失败品是怎么改名字的

睡觉了

万分感谢,晚安
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-26 15:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表