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

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

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

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

selenium

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

解決済

seleniumを使ったスクレイピング

NEKOTABETAI
NEKOTABETAI

総合スコア10

Python 3.x

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

selenium

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

2回答

0評価

0クリップ

399閲覧

投稿2022/05/23 03:55

編集2022/05/24 11:57

前提

Python 3.9.7 (anaconda3使用)でwebから要素をとってくるプログラムを作っています。
以下のエラーメッセージが発生しました。
不慣れなので必要な情報が抜けているかもしれません。

実現したいこと

以下のサイトから、マップ名(devツールで見てみると 'map-title'のクラスがついています)と、ローテーション時間(同様に 'map-countdown'のクラスがついています)をテキストとして取り出したいです。

https://apexmap.kuroi.io/

発生している問題・エラーメッセージ

どこからが必要な情報かがわからないのでターミナルをコピペしました。
見ずらくて申し訳ないです。
INUDOGはユーザー名です(笑)

(py39) C:\Users\INUDOG\OneDrive\ドキュメント\my python projects>C:/Users/INUDOG/anaconda3/envs/py39/python.exe "c:/Users/INUDOG/OneDrive/ド キュメント/my python projects/test.py" c:\Users\INUDOG\OneDrive\ドキュメント\my python projects\test.py:10: DeprecationWarning: use options instead of chrome_options driver = webdriver.Chrome('C:/Program Files (x86)/selenium/chromedriver',chrome_options=options) DevTools listening on ws://127.0.0.1:59180/devtools/browser/2d328c73-125b-440e-ac5a-6fb866e6a794 Traceback (most recent call last): File "c:\Users\INUDOG\OneDrive\ドキュメント\my python projects\test.py", line 13, in <module> map = driver.find_element_by_xpath('//*[@id="app-shell"]/div[2]/app-br-map-rotation/app-br-rotation/app-map-rotation/div/app-hero/div/div[2]') File "C:\Users\INUDOG\anaconda3\envs\py39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath return self.find_element(by=By.XPATH, value=xpath) File "C:\Users\INUDOG\anaconda3\envs\py39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element return self.execute(Command.FIND_ELEMENT, { File "C:\Users\INUDOG\anaconda3\envs\py39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute self.error_handler.check_response(response) File "C:\Users\INUDOG\anaconda3\envs\py39\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":"xpath","selector":"//*[@id="app-shell"]/div[2]/app-br-map-rotation/app-br-rotation/app-map-rotation/div/app-hero/div/div[2]"} (Session info: headless chrome=101.0.4951.67)

該当のソースコード

python

from lib2to3.pgen2 import driver from webbrowser import Chrome from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.options import Options options = Options() options.add_argument('--headless') driver = webdriver.Chrome('C:/Program Files (x86)/selenium/chromedriver',chrome_options=options) driver.get('https://apexmap.kuroi.io/br') map = driver.find_element_by_xpath('//*[@id="app-shell"]/div[2]/app-br-map-rotation/app-br-rotation/app-map-rotation/div/app-hero/div/div[2]') countdown = driver.find_element_by_xpath('//*[@id="app-shell"]/div[2]/app-br-map-rotation/app-br-rotation/app-map-rotation/div/app-hero/div/div[2]/div[1]') print(map + countdown)

試したこと

最初はクラス名で探していたのですが、見つからないとエラーが返ってきたのでxpathでやってみましたができませんでした。
headlessオプションでは未確認ですが、headlessオプション無し時に10行目までは正しく動作したのを確認しています。(目的のページを開けたということ)

補足情報(FW/ツールのバージョンなど)

本題に関係するかわからないのですが、上記のリンクはそのリンク先に飛ぶと、末尾に 'br' が追加されhttps://apexmap.kuroi.io/brとなります。
なぜこのようなことが起きるのですか?

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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

selenium

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