scrapy 파충류 파일 다운로드, 이름 바 꾸 기

13029 단어 파 이 썬 파충류
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 SubCrawlerItem

class 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: ", url
        item = 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 및 수정 ITEMPIPELINES
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

좋은 웹페이지 즐겨찾기