要件:高品質の写真のマスタークロール材料
A.データ解析(画像アドレス)
画像SRCを解析することにより、Xpathのプロパティ値。
唯一のパイプラインへの提出のimgのsrc解析の属性値を必要とする、パイプラインは、要求のsrc画像上で行われる画像を取得します
クモファイル
クラスImgSpider(scrapy.Spider): 名 = ' IMG ' #allowed_domains = [ 'www.xxx.com'] start_urls = [ ' http://sc.chinaz.com/tupian/ ' ] DEF 解析(自己、応答) : src_list = response.xpath(' // DIV / divの[上記のid = "コンテナ" @] ' ) #の印刷(src_list) について src_item でsrc_list: #1 (ロードされたイメージは、怠惰な絵をスライドさせるブラウザは、SRC属性src2のになったときプロパティ) #Scrapyピクチャないスライド、使用SRC2特性(擬似属性) src_content src_item.xpath =('./div/a/img/@src2 ' ).extract_first() プリント(src_content) 項目 = ImgsproItem() 項目[ ' SRC ' ] = src_content 収量アイテム
パイプファイルにパイプのカスタムクラスに基づいてII。ImagesPipeline
3実装方法親クラス
-get_media_requests
-file_path
-item_completed
パイプラインのファイル:
インポートscrapy から scrapy.pipelines.images インポートImagesPipeline クラスImgsproPipeline(オブジェクト): 項目は = なし DEF (セルフ、アイテム、スパイダー)をprocess_itemません: リターン項目 #のファイルのダウンロードパイプクラスのImagesPipelineを、ダウンロードプロセスが非同期およびマルチスレッドの両方をサポート クラス(ImgPipeLineをImagesPipeline): #絵要求操作で項目の DEFのget_media_requests(セルフ、項目、情報): 収量 scrapy.Request(項目[ ' SRC ' ]) #のカスタム画像名 DEF FILE_PATH(セルフ、リクエスト、レスポンス=なし、情報=なし): imgName = request.url.split(' / ')[ - 1 ] リターンimgName # DEFは(自己、結果、項目、情報を)item_completed: リターン項目 #が実行される次のクラスにパイプ
III。設定ファイルディレクトリに格納されている指定された写真
'/ IMG' IMAGES_STORE =
プロファイル:
#USER_AGENT = 'ランボー(+ HTTP://www.yourdomain.com') USER_AGENT = " Mozillaの/ 5.0(Macintosh版、インテルのMac OS X-10_12_0)のAppleWebKit / 537.36(ヤモリのようにKHTML、)クローム/ 68.0.3440.106サファリ/ 537.36 「 #は、キャリア要求のアイデンティティ偽装 #オベイrobots.txtのルール #ROBOTSTXT_OBEY =真 ROBOTSTXT_OBEY =偽 #ロボットプロトコルと無視できるまたは非コンプライアンス 位ログ情報のみ指定されたタイプを示し 、LOG_LEVELを、= 」ERROR 「 位の最終画像格納するディレクトリを示し IMAGES_STOREを= 」./imgs " #Scrapy(デフォルト:16)によって実行される設定最大同時要求 #CONCURRENT_REQUESTS = 32段の #設定項目パイプライン #はhttps://doc.scrapy.org/en/latest/topics/item-pipeline.html参照 ITEM_PIPELINES = { ' imgsPro.pipelines.ImgsproPipeline ' 300 、 ' imgsPro.pipelines.ImgPipeLine ':200 、 }