ホームページ  >  記事  >  バックエンド開発  >  Web サイトから画像をクロールし、ローカルに自動的にダウンロードします

Web サイトから画像をクロールし、ローカルに自動的にダウンロードします

WBOY
WBOYオリジナル
2023-06-13 13:28:503192ブラウズ

インターネット時代では、人々はギャラリーやソーシャル プラットフォームなどのさまざまな Web サイトから写真をダウンロードすることに慣れてきました。少数の画像をダウンロードするだけであれば、手動操作は面倒ではありません。しかし、大量の写真をダウンロードする必要がある場合、手動で行うと非常に時間と労力がかかるため、自動化技術を活用して自動的にダウンロードする必要があります。

この記事では、Python クローラー テクノロジを使用して、Web サイトからローカル コンピューターに画像を自動的にダウンロードする方法を紹介します。このプロセスは 2 つのステップに分かれています: 最初のステップは、Python のリクエスト ライブラリまたは Selenium ライブラリを使用して Web サイト上の画像リンクを取得することです; 2 番目のステップは、Python の urllib または取得したリクエスト ライブラリを介して画像をローカルにダウンロードすることですリンク。

ステップ 1: 画像リンクを取得する

  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 属性の値を抽出します。

  1. セレン ライブラリを使用してリンクをクロールする

画像リンクを取得する別の方法は、セレン ライブラリを使用することです。サンプル コードは次のとおりです:

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。