抗ホットリンクの溶液MN52美しい写真や画像をクロールPythonのWebサイト

盗難防止チェーン原理

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の)
     印刷グラブが完了しています

他の写真は、ダウンロードに時間がかかる、コンソールは、ダウンロードプロセスを表示します

ダウンロードが成功したかどうかの画像を表示するファイルを開きます。

 

完了

おすすめ

転載: www.cnblogs.com/nmsghgnv/p/11311680.html