今日は花びらの網を這うつもりですhttps://huaban.com/
デザイナーがインスピレーションを見つけるための楽園!ダウンロードする画像素材は膨大で、高品質の画像インスピレーションライブラリです
今回はリクエストを使ってペタルネットにログインし、ページをクロールし、regularとjsonを使って有用な情報を抽出し、最後に取得した画像情報をローカルに保存します
1.使用するテクノロジー
- pythonの基本
- セッションユーザーセッションを取得し、写真をダウンロードするためにログインページを要求します
- ページから有用な情報を抽出するための正規表現
- jsonはページ内の画像を解析します
2.ターゲットページ
https://huaban.com/search/?q=女神&category = photography
3.結果
第四に、必要なライブラリをインストールします
- win + Rを開いて実行する
- cmdをコンソールに出力します
- リクエストを個別にインストールする
pipインストールリクエスト 1
5、分析ページ
- ページパターン
ページングボタンをクリックして、
ページの最後のパラメータのパターンを取得します。最初のページ:https
://huaban.com/search/?q = Goddess&category = photography&page = 1 2番目のページ:https://huaban.com / search /?q = Goddess&category = photography&page = 2
2.ログイン
Fiddlerを介して、ログイン要求のアドレスとパラメーターを表示します
#地址 https://huaban.com/auth/# 参数 "email": "******"、 "password": "*****"、 "_ref": "frame" 123456
ユーザーがログインした後、リクエストのsession()関数を使用してセッション情報を取得することにしました。
3.ページ情報
右クリックしてソースコードを表示すると、データがjavascriptに保存されていることがわかります。通常の式を使用して、ページ情報を抽出します。
6、すべてのコード
#-*-coding:utf-8-*- インポートリクエスト import re import json #インポートリクエストre-regular json '' ' login login petals get session ' '' def login(): login_url = 'https://huaban.com / auth / ' #ログインアドレス ヘッダー= { "User-Agent": "Mozilla / 5.0(Windows NT 10.0; Win64; x64; rv:78.0)Gecko / 20100101 Firefox / 78.0"、 "Accept": "application / json" 、 "コンテンツタイプ": "アプリケーション/ x-www-form-urlencodedで;のcharset = UTF-8"、 "リファラー": "https://huaban.com/" } #リクエストヘッダ情報 セッション=要求します。session() #sesson 会话 login_data = { "email": "zengmumu%40126.com"、 ページを取得情報(「美しさ」のテキストエンコーディングの結果は「%E5%A5%B3%E7%A5%9E」です) "password": "zmm123"、 "_ref": "frame" } response = session.post(login_url、data = login_data、headers = headers、verify = False) #ログインページ getPic(session、5) #前に画像を取得5ページ '' ' getPic はページ セッションセッション情報の画像アドレスを解析します numは最大ページ数です ' '' def getPic(session、num): for i in range(1、num + 1): response = session.get( " https://huaban.com/search/?q=%E5%A5%B3%E7%A5%9E&category=photography&page="+str(i))data data = re.search( 'app \ .page \ [\ "pins \" \] =(。*); \ napp.page \ [\ "page \" \]'、response.text、re.M | re .I | re.S) #現在のページが配置されているすべての画像情報を抽出します data = json.loads(data.group(1)) #文字列を データ内のアイテムのリストに変換します: url = "https:// hbimg。 huabanimg.com/ "+ item [" file "] [" key "] #スプライシング画像アドレス index = item [" file "] [" type "]。rfind(" / ") type ="。 "+ item [" file "] [" type "] [index + 1:] #画像のタイプを取得 file_name = item [" raw_text "] #画像の中国語名を取得 download_img(url、file_name、type) #画像をダウンロードする '' ' 画像の URLをダウンロードする 画像名のアドレス画像の中国語名 type picture type ' '' def download_img(url、name、type): response = requests.get(url、verify = False) #リクエストを使用して写真をダウンロードします index = url.rfind( '/') file_name = name + url [index + 1:] + type #のハッシュ値を取得します print( "Download picture:" + file_name) #画像の名前を 出力save_name = "./photo/" + file_name #画像が保存されるアドレス(写真を自分で作成する必要があることに注意してください。現在の.pyファイルと同じフォルダー) 。open(save_name、 "wb")をf: fとして指定します。.write(response.content) #ローカルに画像を書き込み ます `` 'メイン関数を定義します ' '' def main(): login() #モジュールの名前が__main__の場合、 __ name__ == '__ main__'の場合はメインのメイン関数を実行します: main()
とてもシンプルですか、コメントはすべてコードにあります。ご不明な点がございましたら、エクスチェンジに参加して回答ベースにご参加ください。⬅彼をクリック