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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

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

selenium

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

Q&A

解決済

1回答

915閲覧

【Python】seleniumで特定の要素を抜き出したい

YujiIshikawa

総合スコア1

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

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

selenium

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

0グッド

0クリップ

投稿2021/09/15 04:55

編集2021/09/15 21:45
コード ```プログラミング初心者です。 ・seleniumを使い、下記の特定の要素を取得したいのですがエラーになってしまいます。  ・・・・selenium使用はスクロールをして取得するため ・**_2hAOMPRI7qeW以降の要素を取得するには、どうすればよいでしょうか?**   ご教示いただけるとうれしいです。 ※とりあえずは、要素 _2jgEMnhQANtxを取得してからfindやreplaceなどを使って不要な情報を取り除いて対処してます。 ### 発生している問題・エラーメッセージ ・要素が見つからない ・テキストが見当たらない

エラーメッセージ

### 該当のソースコード  ``` ■ヤフーショッピングの価格、送料箇所のコードです。 .<div class="_2jgEMnhQANtx" data-postage-beacon> . <p class="_1_rYNy1GQ5n- _3Z3ly613XmPi"> . <span class="_3-CgJZLU91dR">2,280</span> . <span class="_1i7P06OoLEn9">円</span> . </p> . <p class="_2hAOMPRI7qeW">+送料220円</p> . <p class="bacizFCDQePf"> . <span>6,000円以上購入で</span> . <span class="_1h3STCmLByVy">送料無料</span> . </p> </div> ``` ### 試したこと ```Python . for q in range(len(query_list)): . time.sleep(sec) . postages = [] . elms = browser.find_element_by_id("ss_yschsp") . elms.clear() . elms.send_keys(query_list[q],Keys.ENTER) . height = 1000 . while height < 11000: . browser.execute_script("window,scrollTo(0, {});".format(height)) . height += 1000 . print(height) . time.sleep(3) . get_info = browser.find_elements_by_class_name("_2W0PXaK-syIW") . for n in range(len(get_info)): # ◆ 試したこと_1 . postage = get_info[n].find_element_by_class_name("_2hAOMPRI7qeW").text # ◆ 試したこと_2 . postage = get_info[n].find_elements_by_css_selector('_2jgEMnhQANtx ._2hAOMPRI7qeW).text # ◆ 試したこと_3 . postage = get_info[n].find_elements_by_xpath('//div[@class="_2hAOMPRI7qeW"').text . postages.append(postage) ``` ### 補足情報(FW/ツールのバージョンなど) Python3.8.10 jupyter lab, VSCode ここにより詳細な情報を記載してください。

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

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

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

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

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

meg_

2021/09/15 11:43

対象のサイトはスクレイピング禁止ではないサイトですか?そうであればURLを掲載されると回答できるかもしれません。また、コードは「コードの挿入」で記入してください。
YujiIshikawa

2021/09/15 12:43

ご連絡ありがとうございます。 対象サイトは、ヤフーショッピングです。 利用規約を確認し(コードによるチェックも済み)スクレイピング等の禁止事項の記載はありませんでした。 ちなみにスクレイピングで手間取っているのは、送料記載箇所になります。 ご回答頂ければうれしいです。 よろしくお願いします。
meg_

2021/09/15 14:53

> また、コードは「コードの挿入」で記入してください。 現状コードにインデントがなく読むことが困難です。上記対応ください。 > https://shopping.yahoo.co.jp/ > 上記URLで物販品の検索をしたページのスクレイピングです。 質問者さんが実際にスクレイピングしているURLをお知らせいただけないでしょうか?検証するためにはクラス名等も実際のものにしていただき変数値もそのまま実行できるコードの方が回答しやすくなるかと思います。また、取得したい要素を具体的に提示された方が回答しやすくなります。
YujiIshikawa

2021/09/15 21:54

コードの挿入方法が出来ず、すみませんでした。 インデントが出来ず、コードの頭にピリオド( . )をつけて対処しております。 ■URL : ルームシューズで検索した結果です。 https://shopping.yahoo.co.jp/search?p=%E3%83%AB%E3%83%BC%E3%83%A0%E3%82%B7%E3%83%A5%E3%83%BC%E3%82%BA&first=1&tab_ex=commerce&sc_i=shp_pc_top_searchBox&ts=1631736766&mcr=05eacc9b4608393ea8bff33816ec4547&fr=shp-prop&area=01&b=31&cfb=eyJtb2R1bGVzIjpbeyJpZCI6IkVTQyIsInBvc2l0aW9uIjo0fSx7ImlkIjoiUkxJTVEiLCJwb3NpdGlvbiI6MTZ9LHsiaWQiOiJSRUxXRCIsInBvc2l0aW9uIjoyMH0seyJpZCI6IkhJU0xUIiwicG9zaXRpb24iOjMyfV19&row_sum=11 ご確認頂ければありがたいです。 よろしくお願いします。
meg_

2021/09/16 00:49

シンプルなコード(上記URLへアクセスして、get_info = browser.find_elements_by_class_name("_2W0PXaK-syIW")とpostage = get_info[0].find_element_by_class_name("_2hAOMPRI7qeW").text)で確認すると問題なくテキスト取得できました。 質問者さんのコードでget_infoにタグがきちんと取得出来ていますか?
YujiIshikawa

2021/09/16 04:57

ご連絡ありがとうございます。 再度、ヤフーショッピングのページで送料の要素を確認したところ 「送料無料」の場合と、「送料あり」の場合で要素が異なっておりました。 送料無料:_32KbV7dXg8VJ 送料あり:_2hAOMPRI7qeW 確認不足にて質問をしてしまい申し訳ありませんでした。
guest

回答1

0

自己解決

再度、ヤフーショッピングのページで送料の要素を確認したところ
「送料無料」の場合と、「送料あり」の場合で要素が異なっておりました。
送料無料:_32KbV7dXg8VJ
送料あり:_2hAOMPRI7qeW

確認不足にて質問をしてしまい申し訳ありませんでした。

投稿2021/09/16 05:01

YujiIshikawa

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問