ネットの記事でseleniumの紹介があったのでそのサイトのコードを少し変えて
下記の様なコードを作りました
python
1from selenium import webdriver 2 3driver = webdriver.Chrome("c:/driver/chromedriver.exe") 4driver.get("http://www.yahoo.co.jp") 5 6elem_search_word=driver.find_element_by_name("p") 7elem_search_word.send_keys("ランク") 8 9elem_search_btn = driver.find_element_by_class_name("sc-dqBHgY jxoJYO") 10elem_search_btn.click() 11
試した所検索ボックスに文字を入れるとこまでは出来ましたが
最後の検索ボタンを押してくれる作業をしてくれません
yahooのhtmlのソースを表示させてそこから「検索ボタン」と思わしきクラス名を総当りで試してみましたが
全て下記の様なエラーメッセージが出てきます
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\スクレイピング\chrome.py", line 9, in <module>
elem_search_btn = driver.find_element_by_class_name("sc-dqBHgY jxoJYO")
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 564, in find_element_by_class_name
return self.find_element(by=By.CLASS_NAME, value=name)
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
'value': value})['value']
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\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":".sc-dqBHgY jxoJYO"}
(Session info: chrome=79.0.3945.117)
翻訳した内容を要約するとそんなクラス名はありませんとの事です
クラス名自体は「検証」でhtmlソースをコピペして貼り付けてるので無いわけがないのですがこの様なエラー表示が出てきます
「検証」でhtmlソースを表示させる事自体まだ慣れてないので、調べた方法も
「検索」のボタンにカーソルを合わせてそこから画面の右側に表示されたクラス名を全て試しただけです
ちなみに試したクラス名は
・sc-gxMtzJ dDohKU
・sc-dqBHgY jxoJYO
・sc-kTUwUJ ihWmBH
・rapid-noclick-resp sc-jtRfpW gdgGoT ←個人的にこれが一番正解だと思ったのですがこれでもダメでした
何がいけないのでしょうか?
もう一つ別のサイトでの事なんですが
https://jbbs.shitaraba.net/bbs/subject.cgi/game/45148/
このサイトの方でも上記と似たようなpythonのコードを書きました
python
1from selenium import webdriver 2 3driver = webdriver.Chrome("c:/driver/chromedriver.exe") 4driver.get("https://jbbs.shitaraba.net/bbs/subject.cgi/game/45148/") 5 6elem_search_word=driver.find_element_by_name("q") 7elem_search_word.send_keys("ランク") 8 9elem_search_btn = driver.find_element_by_name("q") 10elem_search_btn.click()
上記と同じ様に検索ボックスに文字を入れるとこまではしますが
検索のボタンを押してくれません
ただこちらの場合はエラーが出ずにただ単に全ての処理が終わって(まだ検索ボタン押してないのに)終了しましたみたいな感じの挙動になっています
このサイトのhtmlを調べると
<form action="./" method="GET"> <input type="text" name="q" placeholder="スレッドのタイトルを入力" value=""> <input type="submit" value="検索"> </form>この内容なのでボタンのネームはq以外にありえないはずですが何故か押されていません
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/10 08:26
2020/01/10 08:38
2020/01/10 09:15
2020/01/10 09:21
2020/01/10 09:26
2020/01/10 09:35
2020/01/10 09:52
2020/01/10 09:54
2020/01/10 10:03 編集
2020/01/10 10:09
2020/01/10 10:21