scrapy下载文件并重命名文件,python下载文件并重命名文件

目标:下载网页 http://www.zimuku.cn/search?q=&t=onlyst&p=1 上的字幕文件

设计:涉及scrapy的文件下载中间件

扩展:下载图片也是同样的原理

代码:如下

(1)爬虫模块

# coding:utf-8

import sys
import urllib
import os
reload(sys)
sys.setdefaultencoding( "utf-8" )

import scrapy
from w3lib.html import remove_tags
from subtitle_crawler.items import SubCrawlerItemclass SubSpider(scrapy.Spider):
    name = "sub"
    allowed_domains = []
    start_urls = [
            "http://www.zimuku.cn/search?q=&t=onlyst&p=%s" %i for i in range(1,21)
    ]

    def parse(self, response):
        hrefs = response.selector.xpath('//div[contains(@class, "persub")]/h1/a/@href').extract()
        for href in hrefs:
            url = response.urljoin(href)
            # print "processing1: ", url
            yield scrapy.Request(url, callback=self.parse_detail)

    def parse_detail(self, response):
        url = response.selector.xpath('//li[contains(@class, "dlsub")]/div/a/@href').extract()[0]
        print "processing2: ", urlitem = SubtitleCrawlerItem()
        item['file_url'] = [url]
        yield item

(2)item模块

import scrapy
class SubCrawlerItem(scrapy.Item):
    # define the fields for your item here like:
    file_url = scrapy.Field()

(3)Pipeline模块,继承重命名模块

# -*- coding: utf-8 -*-

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
import scrapy
import os
# from scrapy.pipeline.images import ImagesPipeline
from scrapy.pipelines.files import FilesPipeline
from scrapy.exceptions import DropItem

class MyfilesPipeline(FilesPipeline):

    def get_media_requests(self, item,info):
        for url in item["file_url"]:
            yield scrapy.Request(url)

    def file_path(self, request, response=None, info=None):
        """
        重命名模块
        """
        path = os.path.join('D:\\result', ''.join( [request.url.replace('//', '_').replace('/', '_').replace(':', '_').replace('.', '_').replace('__','_'), '.zip']))
        return path

(4)settings模块 加入FILES_STORE 并修改 ITEM_PIPELINES

FILES_STORE是下载路径

FILES_STORE = 'D:\\result'
ITEM_PIPELINES = {
    # 'subtitle_crawler.pipelines.SubtitleCrawlerPipeline': 300,
    'subtitle_crawler.pipelines.MyfilesPipeline': 400,# 'scrapy.pipeline.files.FilesPipeline': 1
}

有什么不会的可以在下面留言

参考官方文档:http://scrapy-chs.readthedocs.io/zh_CN/0.24/topics/images.html

scrapy爬虫下载文件、重命名文件相关推荐

  1. node.js 文件重命名||文件复制||删除||追加 增删改查

    文件重命名 //文件处理 const fs = require("fs") //文件路径 const pathToFile = path.join(__dirname, " ...

  2. 批处理命令 删除文件,重命名文件

    @echo off rem %1 为路径参数; rem del /q /s del /q /s D:\数据库-勿删\Data\config.xml  删除文件 rem rename D:\数据库-勿删 ...

  3. Linux 命令之 mv -- 移动文件/重命名文件

    文章目录 命令介绍 语法格式 常用选项 命令示例 (一)文件重命名 (二)目录重命名 (三)移动目录 (四)移动目录且重命名 (五)将一个目录下的内容移动到另外一个目录下 (六)移动文件 (七)移动多 ...

  4. (转)C#对FTP的操作(上传,下载,重命名文件,删除文件,文件存在检查)

    转自:http://blog.csdn.net/hejialin666/article/details/3522815 1 using System; 2 using System.Collectio ...

  5. cmd ren命令 重命名文件(夹)

    ren取自rename的前三个字母,name在英文中有"为--取名"的意思,而re是前缀,有"重新做某事"的含义,结合起来,rename就是重命名的含义. re ...

  6. python下载文件并改名_第46p,8行代码,用Python批量重命名文件

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第46篇文章,第二阶段的课程:Python基础知识:小案例之用Python批量重命名文件. 学习本课程,建议先看一遍:[计算机基础知 ...

  7. python 重命名文件出现乱码_下载的文件名总是「乱码」?这里有各平台的解决方法...

    说起「乱码」,没遇到过的电脑用户可能是极少的,尤其在国内中文环境下.暴露年龄的「烫烫烫」系列乱码已经绝迹,现如今遇到的往往是类似「%E9%AB%98%E9%A2%91」和「èªå¨é£è±è½»ä¼¼ ...

  8. 华为云OBS对象存储使用临时URL访问,并对下载文件重命名

    目录 解读 1.使用临时URL访问OBS,并获取临时URL 官方文档 举例 2.使用临时URL访问OBS,并对临时URL下载的文件重命名 分析 举例 解读 在使用OBS进行对云上文件进行下载的时候,发 ...

  9. 迅雷下载iso镜像失败(文件重命名失败)

    打开文件夹找到相应文件 重命名(去掉后缀)即可

最新文章

  1. mysql 查询不使用索引_简单的mySQL查询不使用索引
  2. 三维激光重建原理与实现HALCON
  3. python介绍和用途-python数据类型介绍与使用
  4. 第10章 序列的修改、散列和切片
  5. Mysql水平分表-后端代码
  6. sys.getsizeof(), 字节之间的换算关系
  7. where is path tag generated
  8. 服务治理·理论篇(一)
  9. php 页面加载进度条,HTML5/CSS3 网页加载进度条的实现,下载进度条等经典案例
  10. java 鼠标精灵_纯Java实现跨平台鼠标键盘模拟、找图找色,Java版按键精灵
  11. python中大括号是什么_Python中模块(Module)和包(Package)到底是什么,有什么区别?...
  12. VS2015安装Visual C++的Win32控制台应用程序
  13. 看黄天鹅如何下一颗高端鸡蛋?
  14. 服务器启动成功网页无法访问,apache启动后无法访问网页的解决方法
  15. 异常捕获与自定义迭代器
  16. python语言是什么语言
  17. 【微机原理大作业】从0开始设计RTC电子钟系统(三)(含完整源码和仿真图及下载地址)
  18. ASTM D 3801固体塑料垂直燃烧试验
  19. 这是烙印,是成长的陪伴,是归属
  20. OPENCV图片数字识别

热门文章

  1. 许多代码段,没准儿有你需要的 C++ Builder
  2. mete20可以升级鸿蒙,从微信小程序到鸿蒙js开发【12】——storage缓存自动登录
  3. 算法分析与设计CH3:Growth of Functions
  4. 现在不少别墅、村屋等自建房,屋主会尽量“扩大面积”,却违反了很多基本的风水原则...
  5. 为什么手机里的小爱音响app里搜不到家里的小爱音箱_小米随身版小爱蓝牙音箱【开箱体验】,49的小爱音箱,值了...
  6. 【微服务】初识Docker
  7. 计算机网络(17)——虚电路网络与数据报网络
  8. 医学类计算机基础考试卷,计算机基础试题练习题库.doc
  9. android 基站经纬度,android手机获取gps和基站的经纬度地址实现代码
  10. 树莓派4B安装snort3