Python OSError: [Errno 22] Invalid argument 错误解决

问题描述

在爬取视频数据并保存到本地时报错:OSError: [Errno 22] Invalid argument

1
OSError: [Errno 22] Invalid argument: '练习/汪涵与那些了不起的敦煌人|辗转千年,终其一生.mp4'

解决思路

在爬取其他视频时并没有报此错误,对比后发现是视频名称的问题:在调用open函数时,文件路径中含有字符|,导致报错。

1
2
with open(video_path+'.mp4', 'wb') as fp:
fp.write(video_data)

问题解决

在爬取文件名时,将符号|替换掉。这里直接将其删去。

1
2
name = new_tree.xpath('//*[@id="detailsbd"]/div[1]/div[2]/div/div[1]/h1/text()')[0]
name = name.replace("|","") # 将文件名中的“|”删去

至此问题得以解决。