seleniumなどを使い
yahoo画像検索から
最初の一枚目をクリックさせて
拡大された画像を取得したいという事で
python
1from selenium import webdriver 2from selenium.webdriver.chrome.options import Options 3import requests 4 5 6fruits = ["リンゴ", "バナナ", "イチゴ"] 7 8chrome_path = r"C:/Users/81809/Downloads/chromedriver_win32/chromedriver.exe" 9 10options = Options() 11options.add_argument("--incognito") 12 13driver = webdriver.Chrome(executable_path=chrome_path, options=options) 14 15 16url = "https://search.yahoo.co.jp/image" 17 18img_urls = [] 19 20for query in fruits: 21 driver.get(url) 22 search_box = driver.find_element_by_class_name( 23 "SearchBox__searchInput") 24 search_box.send_keys(query) 25 search_box.submit() 26 27 click_image = driver.find_element_by_css_selector(".sw-Thumbnail__innerImage.sw-Thumbnail__innerImage--width.rapidnofollow").click() 28 get_class = driver.find_element_by_css_selector("sw-PreviewPanel__image") 29 elem = get_class.find_element_by_tag_name('img') 30 img_urls.append(elem.get_attribute('src')) 31 32for i, img_url in enumerate(img_urls, start = 1): 33 re = requests.get(img_url) 34 with open(r'C:/Users/81809/OneDrive/Desktop/b/img/' + "{}.jpg".format(i), 'wb') as f: # imgフォルダに格納 35 # .contentで画像データとして書き込む 36 f.write(re.content) 37
このサイトでの皆様のご回答、ご指摘により
ここまで書くことが出来ました。
こちらを実行すると
self.error_handler.check_response(response) File "C:\Users\81809\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"sw-PreviewPanel__image"} (Session info: chrome=92.0.4515.131)
こう出ます
取得したい画像をクリックさせて
開発者ツールを見てみると
確かにクラス名(緑の線)があります
取得したいクラス名を含んだクラス名(赤い線)が
別のタグにあるから?と思い
クラス名:nth-of-type(2)
を試してみましたが、同じエラーが出ました。
そもそもエレメントが見つけられてない
ってことは
やっぱり別にやり方があるのではと思い
selemium element 見つからない
で調べると
import time time.sleep(30)
を使うようにとあり
試してみましたが、同じエラーが出てしまいます。
何か改善策はありますでしょうか?
ヒントだけでも教えて頂けると幸いです。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー