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
注意:これで