質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1980閲覧

Seleniumを使ってidを正しく取得できない問題について.

Algeot

総合スコア21

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/07/26 08:00

Googleの検索画面でPythonと入力し, 検索画面を出力するという平易なコードを書きましたが, エラーを起こしてしまいました.

Python

1from selenium import webdriver 2from selenium.webdriver.common.by import By 3 4driver = webdriver.Chrome() 5url = 'https://www.google.com/' 6driver.get(url) 7search_box = driver.find_element(By.ID, 'input') 8search_box.send_keys('Python') 9search_box.submit()

以下はエラーの主要部分です.
恐らくはinputという名を持つidが存在していないことを主張しています.

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="input"]"}

しかしコードの作成にあたって, 検索画面のソースコードをF12で起動し, 検索欄のidがinputであることを確認しました.
何故正しく動作しないのか分からず, 困っております.

私はPythonに関して多少の知識はありますが, HTMLは駆け出しです.
そのためソースコードを正しく理解できていないかもしれません.
以上, 原因の指摘をよろしくお願いいたします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「www.google.com/」内に「id=input」のタグはありません。
タグ名をIDと間違えているのではないでしょうか?

html

1<input class="gLFyf gsfi" jsaction="paste:puy29d;" maxlength="2048" name="q" type="text" aria-autocomplete="both" aria-haspopup="false" autocapitalize="off" autocomplete="off" autocorrect="off" autofocus="" role="combobox" spellcheck="false" title="検索" value="" aria-label="検索" data-ved="0ahUKEwi0mayPj5b5AhXrkVYBHT8tBN0Q39UDCAc"> 2↑このinputはタグ名

そうであれば、タグ名指定で動作するかと思います。

python

1#search_box = driver.find_element(By.ID, 'input') 2search_box = driver.find_element(By.TAG_NAME, 'input')

投稿2022/07/26 08:22

編集2022/07/26 08:22
Matsumon0104

総合スコア1005

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Algeot

2022/07/26 08:38 編集

回答ありがとうございます. "" search_box = driver.find_element(By.TAG_NAME, 'input') "" に変更したところ, 正常に動作することを確認しました. しかし一つ質問があります. Google検索画面においてF12を押して表示されるDevToolsにおいて, メニューバー左上の select an element in the page to inspectを選択し, 検索欄を左クリックすると, 検索欄に対応するソースコードが表示されると学びました. それを行うと <input id="input" type="search" autocomplete="off" spellcheck="false" role="combobox" placeholder="Search Google or type a URL" aria-live="polite"> という部分が青く強調されるのですが, 私はここにある id="input" をみて input が id であると判断しました. この考えはどこが間違っているのでしょうか. 重ねての質問になりますがご容赦ください.
Matsumon0104

2022/07/26 08:44

www.google.com」で間違いないでしょうか? chromeで参照してみたところ、placeholderに「Search Google or type a URL」が設定されているエレメントが確認できません。(F12のDevTool上で「document.querySelector」でエレメント取得できるかを確認) ご確認した際のページが「www.google.com」ではないのではありませんでしょうか?
Algeot

2022/07/26 08:52

なるほど! 私が参照していたページは「www.google.com」ではなく, New Tab のページであったということが問題かもしれません. 「www.google.com」で同様の検証を行ったところ, <input class="gLFyf gsfi" jsaction="paste:puy29d;" maxlength="2048" name="q" type="text" aria-autocomplete="both" aria-haspopup="false" autocapitalize="off" autocomplete="off" autocorrect="off" autofocus="" role="combobox" spellcheck="false" title="検索" value="" aria-label="検索" data-ved="0ahUKEwiQ0NHhlZb5AhUjmFYBHRv4DHUQ39UDCAc"> と表示され, たしかに id は存在しておりませんでした. New Tab と「www.google.com」が異なることを知りませんでした. 丁重な回答ありがとうございます.
Matsumon0104

2022/07/26 08:56

上手くいってよかったです。 下記エレメントを含むページでスクレイピングをした場合、Algeotさんの示したコードでちゃんと動くと思いますよ。(エレメントの指定方法に間違いはありません。) ><input id="input" type="search" autocomplete="off" spellcheck="false" role="combobox" placeholder="Search Google or type a URL" aria-live="polite">
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問