Scrapyはほとんど知られている画像を使用してクロール

settings.py

- * -コーディング:UTF-8 - * - 

zhihutupianプロジェクトのためのScrapy設定
#の簡単にするために、このファイルは設定のみが重要かと考え含ま一般的に使用されます。あなたがドキュメントをコンサルティング、より多くの設定を見つけることができます:     https://doc.scrapy.org/en/latest/topics/settings.html      https://doc.scrapy.org/en/latest/topics/downloader-middleware .htmlの     https://doc.scrapy.org/en/latest/topics/spider-middleware.html 

BOT_NAME = ' zhihutupian ' 

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


クロール責任をユーザーエージェントに自分自身(およびWebサイト)を特定することにより、
#1 = 'zhihutupian(+のhttp://www.yourdomain.com')USER_AGENT 
USER_AGENT = " Mozillaの/ 5.0(Windows NTの10.0 ; Win64の;のx64)のAppleWebKit /ヤモリ様537.36(KHTML)クローム/ 80.0.3987.149サファリ/ 537.36 " 
オベイrobots.txtのルール 
ROBOTSTXT_OBEYを= #LOG_LEVEL = "ERROR" 

IMAGES_STORE = ' ./imgsLib ' #自动创建文件夹

:Scrapy(16デフォルト)によって実行される設定最大同時要求CONCURRENT_REQUESTS = 32 

設定同じWebサイトに対する要求の遅延(デフォルト: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 = {     'zhihutupian.middlewares.ZhihutupianSpiderMiddleware':543、 } 

有効または無効ダウンローダミドルウェアの
#を参照してくださいhttps://doc.scrapy.org/en/latest/topics/downloader-middleware.html DOWNLOADER_MIDDLEWARES = {     'zhihutupian.middlewares.ZhihutupianDownloaderMiddleware':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 = {
    ' zhihutupian.pipelines.ImgproPipeline ":300 
} 

#が有効そして、(デフォルトでは無効)オートスロットルの拡張子を設定するを参照https://doc.scrapy.org/en/latest/topics/autothrottle.html AUTOTHROTTLE_ENABLED =真初期ダウンロード遅延AUTOTHROTTLE_START_DELAY = 5 高レイテンシの場合に設定される最大ダウンロード遅延AUTOTHROTTLE_MAX_DELAY = 60 Scrapyはと並行して送信されなければならない要求の平均数
#は、各リモートサーバ
#1 = 1.0 AUTOTHROTTLE_TARGET_CONCURRENCY 
#は、すべての応答のためのスロットリング統計を示す有効受付:AUTOTHROTTLE_DEBUGは= Falseの

有効化と設定HTTPキャッシング(デフォルトでは無効)https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settingsを参照してくださいHTTPCACHE_ENABLED = TrueのHTTPCACHE_EXPIRATION_SECS = 0 HTTPCACHE_DIR = 'httpcache' HTTPCACHE_IGNORE_HTTP_CODES = [] HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

 

pipelines.py

- * -コーディング:UTF-8 - * - 

ここにあなたの商品のパイプラインを定義設定ITEM_PIPELINESにあなたのパイプラインを追加することを忘れないでください参照を:https://doc.scrapy.org/en/latest/topics /item-pipeline.html 


から scrapy.pipelines.images インポートImagesPipelineの
 インポートscrapyの
 クラスImgproPipeline(ImagesPipeline):
    ImgproPipeline 
    DEF get_media_requests(自己、項目情報):#注意此处使用的是get_media_requests、注意末尾的S 
        img_src =項目【' img_src ' ]
         プリント(img_src)
         収率scrapy.Request(URL = img_src、メタ= { ' アイテム' :アイテム})

    デフ FILE_PATH(自己、要求、応答=なし、情報= なし):
        img_name = request.meta [ ' アイテム' ] [ ' img_name ' ]
         
        リターンimg_nameは

    デフitem_completed(自己、リクエスト、アイテム、情報):
         リターン・アイテム

items.py

- * -コーディング:UTF-8を- * - 

あなたの掻き取りのアイテムはこちらモデルを定義します
。# 参照文書で:https://doc.scrapy.org/en/latest/topics/items.html 

輸入scrapyの


クラスZhihutupianItem(scrapy.Item): 

    は、のようなここにあなたの項目のためのフィールドを定義します。 
    img_name = scrapy.Field()
    img_src = scrapy.Field()
    

zhihu.py

- * -コーディング:UTF-8 - * - 
インポートScrapy
 から zhihutupian.items インポートZhihutupianItem 

クラスZhihuSpider(scrapy.Spider): = ' zhihu ' 
    allowed_domains = [ 'www.zhihu.com'] 
    start_urls = [ ' HTTPS ://www.zhihu.com/question/xxxxxx " ] 
    I = 0
     DEF 解析(自己、応答):
        div_list = response.xpath(" //図" #の解決に)ラベルすべての画像
         のための img_src div_list:

            img_name = STR(self.i)+ ' .JPG ' 
            src_div = img_src.xpath(" ./img/@data-original " ).extract_first()   
            プリント(src_div) 
            項目= ZhihutupianItem()
            項目[ ' img_name ' ] = img_nameの
            項目[ ' img_src ' ] = src_div プリント(項目[ ' img_name ' ])
            #1 プリント(項目[ ' img_src '])
            self.i + = 1つの
             降伏項目

 

変更を加えずにimddlewares.py  

注意:これで

 

おすすめ

転載: www.cnblogs.com/cuirenlao/p/12534273.html