クローリングについて質問です。 機械学習に興味があり、seleniumとFirefoxを使ってデータセットを自作したいのですが画像のダウンロードができません。 エラーの発生なく実行が完了する物の、取得した画像の数が0になってしまいます。 使用言語:Python 環境:ローカル接続したGoogle Colab selenium: ver 4.27.1 geckodriver:ver 0.35.0-win32 Firefox: 133.0(64bit) import time import os from selenium.webdriver.common.by import By from selenium import webdriver from selenium.webdriver.firefox.service import Service from selenium.webdriver.firefox.options import Options # Firefox WebDriverの設定 options = Options() options.binary_location = r"C:\Program Files\Mozilla Firefox\firefox.exe" service = Service(r"D:\CNN\geckodriver-v0.35.0-win32\geckodriver.exe") # スクレイピング対象のURLリスト URLS = ["https://www.google.com/search?tbm=isch&q=zaisu"] # 画像保存先 save_dir = r"D:\CNN\oidv6_furniture\test\zaisu" if not os.path.exists(save_dir): os.makedirs(save_dir) # ページの情報を取得する関数 def retrieve_images(driver, url): try: driver.get(url) time.sleep(5) # ページが完全に読み込まれるまで待機 # 画像要素を取得 images = driver.find_elements(By.CSS_SELECTOR, "img.Q4LuWd") for index, img in enumerate(images[:10]): # 最初の10画像を取得 try: src = img.get_attribute("src") if src and src.startswith("http"): # 画像をローカルに保存 image_path = os.path.join(save_dir, f"image_{index + 1}.jpg") with open(image_path, "wb") as f: f.write(driver.execute_script("return fetch(arguments[0]).then(res => res.arrayBuffer()).then(buf => new Uint8Array(buf));", src)) except Exception: pass except Exception: pass # WebDriverの初期化 driver = webdriver.Firefox(service=service, options=options) # URLリストを順に処理 try: for url in URLS: retrieve_images(driver, url) finally: driver.quit()
プログラミング