ホームページ >バックエンド開発 >PHPチュートリアル >Web サイトから画像をクロールし、ローカルに自動的にダウンロードします
インターネット時代では、人々はギャラリーやソーシャル プラットフォームなどのさまざまな Web サイトから写真をダウンロードすることに慣れてきました。少数の画像をダウンロードするだけであれば、手動操作は面倒ではありません。しかし、大量の写真をダウンロードする必要がある場合、手動で行うと非常に時間と労力がかかるため、自動化技術を活用して自動的にダウンロードする必要があります。
この記事では、Python クローラー テクノロジを使用して、Web サイトからローカル コンピューターに画像を自動的にダウンロードする方法を紹介します。このプロセスは 2 つのステップに分かれています: 最初のステップは、Python のリクエスト ライブラリまたは Selenium ライブラリを使用して Web サイト上の画像リンクを取得することです; 2 番目のステップは、Python の urllib または取得したリクエスト ライブラリを介して画像をローカルにダウンロードすることですリンク。
ステップ 1: 画像リンクを取得する
まず、リクエスト ライブラリを使用して次のことを行う方法を見てみましょう。画像リンクをクロールします。サンプル コードは次のとおりです。
import requests from bs4 import BeautifulSoup url = 'http://example.com' response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') img_tags = soup.find_all('img') urls = [img['src'] for img in img_tags]
Example Web サイトを例として、まずリクエスト ライブラリを使用して Web コンテンツをクロールし、BeautifulSoup ライブラリを使用して HTML を解析します。次に、soup.find_all('img')
メソッドを使用して HTML 内のすべての img タグを取得し、リスト内包表記を使用して各タグの src 属性の値を抽出します。
画像リンクを取得する別の方法は、セレン ライブラリを使用することです。サンプル コードは次のとおりです:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from time import sleep url = 'http://example.com' options = Options() options.add_argument('--headless') service = Service('/path/to/chromedriver') driver = webdriver.Chrome(service=service, options=options) driver.get(url) sleep(2) img_tags = driver.find_elements_by_tag_name('img') urls = [img.get_attribute('src') for img in img_tags]
ここでは ChromeDriver を使用しますが、使用する場合はサンプルコードの 'path/to/chromedriver'
にパソコン上の ChromeDriver のパスを記入する必要があります。コードの 2 行目はヘッドレス ブラウザを有効にし、Chrome ブラウザ ウィンドウでの操作を回避し、速度を向上させます。次に、Selenium ライブラリの webdriver モジュールを使用して Chrome ブラウザのインスタンスを作成し、driver.get(url)
を設定してサンプル Web サイトを開きます。次に、driver.find_elements_by_tag_name('img')
を使用してすべての img タグを取得し、各タグの src 属性の値を取得します。
ステップ 2: 画像をダウンロードする
画像をダウンロードするにはさまざまな方法がありますが、ここでは Python 独自の urllib ライブラリまたはリクエスト ライブラリを使用してダウンロードします。サンプル コードは次のとおりです。
import urllib.request for url in urls: filename = url.split('/')[-1] urllib.request.urlretrieve(url, filename)
ここでは、urllib.request ライブラリを使用してネットワークからローカルに画像をダウンロードし、url.split('/')[-1]
は画像ファイル名を取得するために使用され、それを変数ファイル名に割り当て、最後に urllib.request.urlretrieve(url, filename)
を使用して画像をローカルにダウンロードします。 URL に漢字が含まれている場合は、URL もエンコードする必要があることに注意してください。
ここでは、リクエスト ライブラリを使用してイメージをダウンロードする方法について簡単に紹介します。サンプル コードは次のとおりです:
import requests for url in urls: filename = url.split('/')[-1] response = requests.get(url) with open(filename, 'wb') as f: f.write(response.content)
ここでは、リクエスト ライブラリを使用してイメージ バイナリ ファイルを取得し、それをファイルに書き込みます。バイナリ ファイルの書き込みモードは 'wb'
であるため、ファイルを開いて書き込むには with open(filename, 'wb') as f:
を使用する必要があることに注意してください。 、各ファイルが正しく閉じられていることを確認します。
概要
要約すると、Python クローラー テクノロジを通じて、Web サイト上の画像を簡単にクロールし、ローカルに自動的にダウンロードできます。この自動化技術は作業効率の向上に役立ち、大量の画像を処理する作業に非常に役立ちます。同時に、Web サイトから画像をクロールする場合は、関連する法律や規制を遵守し、Web サイトの著作権を尊重する必要があることを思い出してください。公式の許可やウェブサイトの許可がない場合は、ウェブサイト上の画像を無断でクロールしないでください。
以上がWeb サイトから画像をクロールし、ローカルに自動的にダウンロードしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。