🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1090閲覧

python スクレイピング

hiro.a

総合スコア28

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/01/13 11:39

編集2021/01/13 12:13

前提・実現したいこと

Pythonスクレイピングを学習しており、webサイトに記載されているコードの通り進んで行きましたが思った表示が出ず、エラーで躓いています
やりたいことは、chrome検索で次へをクリックし2ページ目以降の情報も取得したいです

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

Traceback (most recent call last): File "/Users/hiromu/PycharmProjects/pythonProject/main.py", line 23, in <module> next_link = driver.find_element_by_id('pnnext')#ここがエラーな理由がわかりません File "/Users/hiromu/.pyenv/versions/3.8.2/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 360, in find_element_by_id return self.find_element(by=By.ID, value=id_) File "/Users/hiromu/.pyenv/versions/3.8.2/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 976, in find_element return self.execute(Command.FIND_ELEMENT, { File "/Users/hiromu/.pyenv/versions/3.8.2/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute self.error_handler.check_response(response) File "/Users/hiromu/.pyenv/versions/3.8.2/lib/python3.8/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":"[id="pnnext"]"} (Session info: chrome=87.0.4280.141)

該当のソースコード

python

1 2from selenium import webdriver 3from time import sleep 4 5driver = webdriver.Chrome('/Users/hiromu/Desktop/Web/python/chromedriver') 6driver.get('https://www.google.co.jp') 7 8i = 0 9while True: 10 i = i + 1 11 sleep(1) 12 for elem_h3 in driver.find_elements_by_xpath('//a/h3'): 13 elem_a = elem_h3.find_elements_by_xpath('..') 14 print(elem_h3.text) 15 print(elem_a.getattribute('href')) 16 next_link = driver.find_element_by_id('pnnext') 17 driver.get(next_link.get_attribute('href')) 18 if i > 4: 19 break 20 21 22(違う例) 2324 25for elem_h3 in driver.find_elements_by_xpath('//a/h3'): 26 elem_a = elem_h3.find_element_by_xpath('..') 27 print(elem_h3.text) 28 print(elem_a.getattribute('href'))

試したこと

コピペして確かめました

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

MacOS Python初学者です

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

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

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

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

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

guest

回答2

0

ベストアンサー

ここがエラーな理由がわかりません

該当タグが無いというエラーです。

投稿2021/01/13 11:57

編集2021/01/13 11:58
otn

総合スコア85882

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

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

hiro.a

2021/01/13 12:03

そちらに関しては間違いはないです
otn

2021/01/13 12:13

無いと言ってるプログラムの方が正しいです。 間違いが無いというのが、勘違いでしょう。 > 次へをクリックし そもそも、googleのトップページ https://www.google.co.jp に「次へ」とか無いですよ。
guest

0

【追記】
まずは、検索ボックスに検索するキーワードを入れること。その後に送信する処理が必要です。
その後、検索結果を表示したページの「次へ」の要素をとるとのことでしたら、id でも selector でも Xpath でも取得できるはずです。


以下のいずれかで試してはいかがでしょうか。

Selector:

#pnnext

Xpath:

//*[@id="pnnext"]

【さらに追記】

検索結果のページに行けば、貴殿の指定方法(※)で「次へ」の要素は取得できました。

(※)

python

1next_link = driver.find_element_by_id('pnnext')

投稿2021/01/13 11:53

編集2021/01/13 13:20
_whitecat_22

総合スコア1305

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問