最近在用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
如果本文对你有帮助,欢迎打赏本站

支付宝扫码打赏
微信扫码打赏
