盗難防止チェーン原理
HTTP標準プロトコルは、特別なフィールドのレコードリファラを持っています
一つは何であるか、インバウンドアドレスにトレースします
そして第二に、彼のウェブサイトのアドレスが何であるかを示すためにトレースを含むことができ、リソースファイルの
だから、すべてのアンチホットリンクの方法は、リファラーのフィールドに基づいています
そう:多くのサイトでは、直接、絵を通じてルートにアクセスするために、このようなメカニズムは403エラーを返します後にセットアップ抗爬虫類のメカニズムを、設定したセキュリティチェーンを使用します
実際には、解決策は単純で、ヘッダを追加し、リファラーを書くことができます!
ヘッダー= { ' のUser-Agent ':' のMozilla / 5.0(のWindows NT 6.1; WOW64)のAppleWebKit / 537.36(ヤモリ様KHTML)クローム/ 65.0.3325.181サファリ/ 537.36 ' 、 ' リファラー' :URL }
次のようにウェブサイト上https://www.mn52.com/をクロールこの記事では、純粋な美しさを描写し。
#必要なライブラリ のインポートが要求 インポート再 インポートOSを からマルチプロセッシングインポートプール #主な機能の DEFの:get_img(URL) #ピクチャー・ストレージ・パス パスを= 「./mn52/ 」 IF ないos.path.exists(パス): os.mkdir (パス) #のリクエストヘッダ、ピクチャ経路は盗難防止チェーンはとても「リファラー」がヘッダに追加配置しているためである:URLの ヘッダー= { 「User--エージェント」:' のMozilla / 5.0(のWindows NT 6.1; WOW64)のAppleWebKit / 537.36(KHTML、同様のGecko)クローム/ 65.0.3325.181サファリ/ 537.36 "、 ' リファラー' :URL } 試み: #リクエストルーティングホームページ レスポンス= requests.get(URL = URL、ヘッダ= ヘッダ) #の印刷(response.text) #通常のサブページを取得し、抽出されたトラバース re.findall =をres_paging(" 。?<DIV CLASS = "picbox"> * <のhref = "(。*?)" 'response.text、re.S) のための私でres_paging: #のステッチサブページルーティング url_infosの= ' HTTPS:// WWW .mn52.com " + I #要求ルーティングサブページ = requests.get res_details(URL = url_infos、ヘッダ= ヘッダ) #のトラバースゲットピクチャールーティング res_detail = re.findall(" <DIV CLASS = "IMG-ラップ">。*?<IMG。*?のrel =「(。* ?)「/> 'res_details.text、re.S) のための私でres_detail: #画像全体のルーティング img_urlsの= ' HTTPS:' + I #自分のイメージ命名 ファイル名を= i.split(' / ")[ - 1 ] #の画像がダウンロードされているかどうかを判断した場合 os.path.exists(パス+ STR(ファイル名)): 印刷(' 画像がすでに存在している' ) それ以外: #の要求イメージ接続 RES = requests.get(URL = img_urls、ヘッダ= ヘッダ) #画像を保存 オープン(パス+ STR(ファイル名で)、' WB ' )F AS: f.write(res.content) #のプリントのダウンロード情報 を印刷(' ダウンロード:' + img_urls) を除き、E AS例外: 印刷(E) #のプログラムエントリ IF __name__ == ' __main__ ' : #は、完全なルーティング構築 [URLをする= ' https://www.mn52.com/meihuoxiezhen/list_2_{}.html ' .format(I)のために I における範囲(1,94 )] #マルチプロセスが開い プール= プール() #をプログラム起動 pool.map(get_img、URLの) 印刷(「グラブが完了しています」)
他の写真は、ダウンロードに時間がかかる、コンソールは、ダウンロードプロセスを表示します
ダウンロードが成功したかどうかの画像を表示するファイルを開きます。
完了