最近在用scrapy框架采集网站视频,在下载到本地时候因为有特殊字符则利用python正则替换,具体在框架中的实现方式:
from urllib import request import re import os # 自定义urlretrieve中的回调函数实现下载资源进度条功能 def fun(blocknum, blocksize, totalsize): """ blocknum:当前的块编号 blocksize:每次传输的块大小 totalsize:网页文件总大小 """ percent = blocknum * blocksize / totalsize if percent > 1.0: percent = 1.0 percent = percent * 100 print("download : %.2f%%" % (percent)) class BanbanPipeline(object): def process_item(self, item, spider): if item['video'] is not None: #windows系统中文件名不能包含 \ / : * ? " < > |想要创建必须过滤掉这些字符 item['title'] = re.sub('[\/:*?"<>\|]', '-', item['title']) # 去掉非法字符 file = 'D:\\video\\' + item["num"] + item['title'] + '.mp4' if os.path.exists(file) == False: request.urlretrieve('https://' + item['video'], file, fun) return item
如果本文对你有帮助,欢迎打赏本站