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

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

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

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

selenium

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

Q&A

解決済

1回答

3979閲覧

seleniumでfind_element_by_tag_nameができない。

oika77

総合スコア184

Python 3.x

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

selenium

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

0グッド

0クリップ

投稿2022/01/13 07:33

今pythonでseleniumを使ってスクレイピングをしようとしています。しかし、find_element_by_tag_nameでタグを指定してもエラーが出て、取得することができません。

試した事
サイト内で必ずaタグがあることを確認。
find_element_by_tag_nameの前で4秒待機しても上手くいきません。
他のタグでも確認しましたが、上手くいきませんでした。
URLをgoogleの公式ページにしたら、aタグを取得することができました。なので、このコード自体はそこまで間違っていないと思いますが、何が問題なのでしょうか。

python

1コード 2import time # スリープを使うために必要 3from selenium import webdriver # Webブラウザを自動操作する(python -m pip install selenium) 4import chromedriver_binary # パスを通すためのコード 5 6 7driver = webdriver.Chrome() # Chromeを準備 8driver.get('http://ID:pass@---------/index.html') # Basic認証でログイン 9time.sleep(4) 10p = driver.find_element_by_tag_name('a') 11print(p) 12time.sleep(10) # 10秒間待機 13driver.quit()

以下のようなエラー

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"a"} (Session info: chrome=97.0.4692.71)

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

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

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

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

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

melian

2022/01/13 07:45

認証に失敗しているということはありませんか?
oika77

2022/01/13 09:08

ありがとうございます。ただ、プログラムを実行すると ブラウザが勝手に開いて、ログインに成功しているところは確認しています。
otn

2022/01/13 09:16

aタグが存在しないのでしょう。 time.sleep(4) を time.sleep(120)とかにしてその間にブラウザ画面・開発者ツールなどで確認しましょう。
oika77

2022/01/13 09:43

返信ありがとうございます。 今確認したところ、<a>タグは<frameset>タグの中の<frame>タグの中にありました。<frame src="3.html">と書かれていたので、URLの最後をindex.htmlではなく3.htmlに変更したところ、aタグを取得することができました。 今日の4時間ぐらいの謎が解けました。ありがとうございました。
guest

回答1

0

自己解決

結論から言いますと、aタグがindex.htmlの中になかったということでした。サイトは以下のようになっていまして、<frameset>タグの中の<frame src="3.html">タグの中にaタグが入っていました。
そこで、アクセスするURLをindex.hmlから3.htmlに変更したところ、aタグを取得することができました。

html

1コード 2<html lang=“ja”> 3<head></head> 4<frameset> 5<frame src=“3.html” name=“menu1”></frame> 6<frame src=“2.html” name=“main”></frame> 7</frameset> 8</html>

投稿2022/01/13 09:46

oika77

総合スコア184

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問