大きなファイルの取り扱いをダウンロードscrapy

#学校の美しさのネットワークは大容量のファイル、ビデオの複数のファイルを処理するのに適しまた、例画像をダウンロードするには、オーディオ処理

エンジニアリングプロセス-  
scrapy startprojectの単位xx 
CD XX 
scrapy genspider HH www.xx.com 
爬虫類実行scrapyクロールHH
インポートscrapy
 から yyl.itemsがインポートYylItemの

クラスExampleSpider(scrapy.Spiderを):
    名前 = ' xiaohua ' 
    allowed_domains = [ 'example.com'] 
    start_urls = [ ' http://www.521609.com/daxuemeinv/ ' ] 

    DEF (自己、応答)の解析:
        li_lst = response.xpath(' // * / DIV [2] / DIV [2] / UL /李[ID = "コンテンツ" @] ' #の印刷(li_lst)

        リチウムli_lst :
            アイテム = YylItem() 实例化
            #の項目[ 'SRC'] = '{} http://www.521609.com' .format(li.xpath( './a/img/@src ').extract_first()) 
            項目[ ' SRC ' ] = http://www.521609.com  + li.xpath(./a/img/@src ).extract_first()  スプライシングフルアドレス
            降伏項目

#のダウンロードダウンロードURLのビデオアーカイブ大きなファイルを担当するパイプラインメカニズム
爬虫類ファイル
輸入scrapyの

クラスYylItem(scrapy.Item):
    似ここにあなたの項目のフィールドを定義します 
    (SRC = scrapy.Field)
items.py
インポートscrapy
 から scrapy.pipelines.images インポートImagesPipeline 

クラス:YylPipeline(オブジェクト)
     DEF process_item(セルフ、アイテム、スパイダー):
         印刷(項目)
         戻り項目

大型パイプクラスファイルがダウンロードのために特別にパッケージscrapy使用して
クラスをImgPipeline(ImagesPipeline):
    、大きなファイルを要求
    DEFのget_media_requests(セルフ、項目、情報を):
         収量 scrapy.Request(項目URL = [ ' SRC ' ]) 

    ダウンロードしたファイルの名前を指定するための
    DEFの FILE_PATHを(セルフ、要求、レスポンス=なし、情報= =なし):
        URL request.urlの
        ファイル名 = url.split(' / ') - 1 ]
         戻りファイル名

    #が
     DEF item_completed(自己、その結果、アイテム情報):
         プリント(結果)   #1 结果真{URLパスチェックサム} 
        戻りアイテム   #1 process_item中的リターンアイテム作用一致
パイプラインの.py
BOT_NAME = ' yyl ' 

SPIDER_MODULES = [ ' yyl.spiders ' ] 
NEWSPIDER_MODULE = ' yyl.spiders ' 


#のユーザーエージェントに自分自身(およびWebサイト)を特定することにより、クロール責任

USER_AGENT = " Mozillaの/ 5.0(Windows NTの6.1; Win64の。 x64の)のAppleWebKit / 537.36(KHTML、ヤモリなど)クローム/ 73.0.3683.86サファリ/ 537.36 " 

robots.txtの規則に従う 
ROBOTSTXT_OBEY = Falseの

Scrapy(によって行わ最大同時要求を設定しますデフォルト:16) CONCURRENT_REQUESTS = 32 

同じウェブサイトのための要求のための遅延設定(デフォルト:0) を参照してくださいhttps://doc.scrapy.org/en/latest/topics/settings.html#download-delay を参照してください。また、オートスロットルの設定やドキュメントDOWNLOAD_DELAY = 3 :ダウンロードの遅延設定は一つだけの尊重します
。#CONCURRENT_REQUESTS_PER_DOMAIN = 16 CONCURRENT_REQUESTS_PER_IP = 16 

(デフォルトで有効)を無効にクッキーCOOKIES_ENABLED = Falseの

を無効のTelnetコンソール(デフォルトで有効)TELNETCONSOLE_ENABLED = Falseの

デフォルトのリクエストヘッダをオーバーライドします:DEFAULT_REQUEST_HEADERSの= {   '受け入れる': 'text / htmlで、アプリケーション/ XHTML + xmlの、アプリケーション/ xmlの; Q = 0.9、* / *; qは0.8 ='、 は、   '言語受け入れる': 'en'と、} 

#を有効または無効にスパイダーミドルウェアの
#は参照https://doc.scrapy.org/en/latest/topics/spider-middleware.html SPIDER_MIDDLEWARES = {     'yyl.middlewares.YylSpiderMiddleware':543、 } 

#は、有効または無効ダウンローダミドルウェアは、
#は見ますhttps://doc.scrapy.org/en/latest/topics/downloader-middleware.html DOWNLOADER_MIDDLEWARES = {     'yyl.middlewares.YylDownloaderMiddleware':543、 } 

有効または無効にする拡張機能
#がhttps://doc.scrapy.org/en/latest/topics/extensions.htmlを参照してくださいEXTENSIONS = {     'scrapy.extensions.telnet.TelnetConsole':なし、} 

#の設定項目パイプライン
#を参照してくださいにhttps://doc.scrapy.org/en/latest/topics/item-pipeline.html 
ITEM_PIPELINES = {
    ' yyl.pipelines.YylPipeline ':301 ' yyl.pipelines.ImgPipeline ':300 
} 
IMAGES_STORE = " ./ IMGS ' 

LOG_LEVEL = ' ERROR"
settings.py

ます。https://www.cnblogs.com/zhangchen-sx/p/11023198.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34101784/article/details/93211086