Pythonで一括でWebページの画像をスクレイピングする方法
HTTPリクエストはPythonのRequestsライブラリを使用して行えます。HTMLドキュメントを解析して画像のURLを取得するには、BeautifulSoupライブラリを利用しましょう。
以下は、ウェブページから一括して画像をクロールするための簡単なサンプルコードです。
import requests
from bs4 import BeautifulSoup
import os
def download_image(url, save_dir):
response = requests.get(url)
filename = url.split("/")[-1]
filepath = os.path.join(save_dir, filename)
with open(filepath, "wb") as f:
f.write(response.content)
print(f"Downloaded {url} to {filepath}")
def get_image_urls(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
img_tags = soup.find_all("img")
img_urls = [img["src"] for img in img_tags]
return img_urls
def batch_download_images(url, save_dir):
img_urls = get_image_urls(url)
for img_url in img_urls:
if not img_url.startswith("http"):
img_url = url + img_url # 拼接相对路径
download_image(img_url, save_dir)
url = "https://example.com" # 要爬取图片的网页
save_dir = "images" # 图片保存的目录
batch_download_images(url, save_dir)
コードにおいて、get_image_urls 関数はウェブページ上の全ての画像の URL を取得するために使用され、download_image 関数は画像のダウンロードのために使用され、batch_download_images 関数は画像のバッチダウンロードのために使用されています。
URL変数に画像を作成するウェブページのURLをセットし、save_dir変数に画像を保存するディレクトリをセットしてください。その後、batch_download_images関数をスタートさせて、ウェブページ画像を一括取得します。
なお、あくまで簡易的なサンプルであり、実際の利用にあたっては、具体的な状況に応じて修正や改良が必要になる可能性があります。また、ウェブページ上の画像をスクレイピングするには権利や法的問題が関係する場合があるので、あなたがそれら画像を権利を持って、ないしは合法的に使用できることを確認してください。