ホームページ >バックエンド開発 >Python チュートリアル >クローラー | HD 壁紙のバッチダウンロード (ソースコード + ツールが含まれています)

クローラー | HD 壁紙のバッチダウンロード (ソースコード + ツールが含まれています)

Python当打之年
Python当打之年転載
2023-08-10 15:46:011504ブラウズ


##Unsplash は無料の高品質写真ウェブサイトです #. これらはすべて本物の写真です. 写真の解像度も非常に大きいです. デザイナーの友人に非常に適しています. 素材はイラストのコピーライターの友人にも非常に便利で、壁紙としても機能します。対応する機能コードをexeツールにカプセル化してありますので、ご参考になれば幸いです コードツールの入手方法は記事の最後に載せております

#1. インポート モジュール

1.1 インポート モジュール

##コード:

クローラー | HD 壁紙のバッチダウンロード (ソースコード + ツールが含まれています)

##まず手動ダウンロード プロセスを見てみましょう。右クリックで保存する方法で得られる画像は、一定の比率で圧縮されており、鮮明度が大幅に低下します。

Nature を例に挙げると、無料ダウンロード をクリックしてダウンロード パスを選択します。画像サイズは 1.43M です。

クローラー | HD 壁紙のバッチダウンロード (ソースコード + ツールが含まれています)次に、
特定の Web ページを分析します
:
まず、Web ページの下部にページ番号の選択オプションがあることに気付き、Web ページのスライダーをプルダウンしてみたところ、次のことがわかりました。
写真は動的にロードされました
つまり、Web ページをプルダウンすると、後続の写真が次々に表示されます。
#いくつかの操作の後、ページがプルダウンされると、Web ページが次のリクエストを発行することがわかりました。それらのいずれかをクリックすると、写真の総数
: 10000、総ページ数: 500
が表示されます。

いくつかの URL を見てみましょう:

クローラー | HD 壁紙のバッチダウンロード (ソースコード + ツールが含まれています)

上記のリンクは ページ パラメータのみです は異なります、順番に増えていくので比較的分かりやすく、リクエストする際は順番にたどっていくだけです。

#ページ番号の問題は解決しました。次に、各画像のリンクを分析します。:

クローラー | HD 壁紙のバッチダウンロード (ソースコード + ツールが含まれています)

結果リスト length が次のとおりであることがわかります。ちょうど 20、リクエスト内の per_page 値が同じなので、探している各画像へのリンクがここにあることは間違いありません。
Web ページの分析には時間がかかることが多いですが、全体的には順調に進んでいます。現在、正式に画像をクロールしています。


#2 . 画像のクロール

##2.1 インポート モジュール
import time
import random
import json
import requests
from fake_useragent import UserAgent
    時間: タイミング
  • ランダム:乱数の生成
  • json: json 形式のデータの処理
  • リクエスト:Web ページのリクエスト
  • fake_useragent:代理

2.2 获取图片 
模拟代理,以网页的身份访问服务器,避免请求被服务器判定为机器爬虫而不响应请求
ua = UserAgent(verify_ssl=False)
headers = {'User-Agent': ua.random}
根据响应,获取所有图片链接:
def getpicurls(i,headers):
    picurls = []
    url = 'https://unsplash.com/napi/search/photos?query=nature&per_page=20&page={}&xp=feedback-loop-v2%3Aexperiment'.format(i)
    r = requests.get(url, headers=headers, timeout=5)
    time.sleep(random.uniform(3.1, 4.5))
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    allinfo = json.loads(r.text)
    results = allinfo['results']
    for result in results:
        href = result['urls']['full']
        picurls.append(href)
    return picurls
2.3 保存图片 

保存图片文件:
def getpic(count,url):
    r = requests.get(url, headers=headers, timeout=5)
    with open('pictures/{}.jpg'.format(count), 'wb') as f:
        f.write(r.content)
效果:

クローラー | HD 壁紙のバッチダウンロード (ソースコード + ツールが含まれています)


3. EXE爬取

exe工具运行结果:

クローラー | HD 壁紙のバッチダウンロード (ソースコード + ツールが含まれています)

注:
  • ネットワークの順序に影響を与えないように、頻繁にクロールしないようにしてください。

  • #画像は外部ネットワークからの高解像度画像です。クロール速度はネットワークによって異なりますが、一般的にはそれほど速くありません。

  • プロキシ プールを構築すると、クロールを高速化できます。

#

以上がクローラー | HD 壁紙のバッチダウンロード (ソースコード + ツールが含まれています)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はPython当打之年で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。