ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

scrapy下载文件

2021-03-31 11:03:36  阅读:369  来源: 互联网

标签:文件 file paths m3u8 item scrapy urls path 下载


与下载图片类似:

1.item中需要有固定的字段

    file_urls = scrapy.Field()
    files = scrapy.Field()

 

2.获取到文件的url,通过item["file_urls"]传送到 pipelines

    def parse_item(self, response):
        item = ScrapyanthingItem()
        data = response.body.decode(response.encoding).replace("\\", "")
        item["file_urls"] = re.findall(r'https://[a-zA-Z0-9./]+/index.m3u8', data)[0]
        yield item

 

3.pipelines 中处理file_urls

 
from scrapy.pipelines.images import ImagesPipeline, FilesPipeline

class DownloadM3u8Pipeline(FilesPipeline): # 继承FilePipeline def get_media_requests(self, item, info): m3u8_url=item['file_urls'] yield Request(m3u8_url, meta={"item": item}) # 请求文件url,scrapy的FilesPipeline会调用file_path,和(第4步)设置中的FILES_STORE储存文件 def file_path(self, request, response=None, info=None):
      # 返回图片储存的地址 a/a.m3u8 item = request.meta["item"] # date = datetime.date.today() st = uuid.uuid4().hex geshi = item['file_urls'].split(".")[-1] file_paths = '{}.{}'.format(st, geshi) return file_paths def item_completed(self, results, item, info): image_paths = [x['path'] for ok, x in results if ok] if not image_paths: raise DropItem("Item contains no images") # 如果没有路径则抛出异常 item['m3u8_paths'] = image_paths return item

4.setting中设置

# 文件储存目录
project_dir = os.path.dirname(__file__)
FILES_STORE = os.path.join(project_dir, "warehouse/files")  # 必须指定FILES_STORE字段

ITEM_PIPELINES = {
    'ScrapyAnthing.pipelines.DownloadM3u8Pipeline': 1,  # 启动文件下载中间件
}

 

标签:文件,file,paths,m3u8,item,scrapy,urls,path,下载
来源: https://www.cnblogs.com/tangpg/p/14600445.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有