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

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

新規登録して質問してみよう
ただいま回答率
85.46%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python

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

Q&A

解決済

2回答

1194閲覧

画面に表示されているページの要素を取得スクレイピングする方法

hideaki_nakashi

総合スコア0

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python

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

0グッド

0クリップ

投稿2021/09/02 04:42

前提・実現したいこと

ご助言をお願いします。
こちらのページの「企業名」と「住所」を取得したいと考えております。

ブラウザのソースの表示では当該要素が表示されておらず
フレームの違いと考えております。

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

エラーメッセージ Message: no such frame: element is not a frame (Session info: chrome=92.0.4515.159) Message: no such element: Unable to locate element

該当のソースコード

python

1ソースコード 2 3url = "https://www.pref.kyoto.jp/wlbsuisin/corp/detail.html?RequestNo={}".format(page) 4driver.get(url) 5name = driver.find_element_by_xpath("/html/body/div/div[3]/div[2]/div[1]/table[1]/tbody/tr/th/text()") 6print(name)

試したこと

driver.switch_to.frame("●●●●")
でありそうな名前noフレームへの遷移を試しましたが取得できませんでした。

当該webページの構造やデータ取得の際に見落としている点などございましたらお知らせください。
よろしくお願いいたします。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

自己解決

自己解決?しました。
(完全ではないけど情報が取れたとの意です)

1.もとめる情報が右クリック(コントロール+クリック)のソースにはあるのに、拡張書式にはない。
ページ読み込みの後に「time.sleep(5)」を追記したら読み込みました。
(time組み込み済みとしてください)

2.求める情報を「driver.find_element_by〜」で指定しても「no such element」エラーが出る。
tableタグ内の要素はテーブル指定してから取得すると取れました。
例)
soup.find("table", {"class":"result_header"})

以上、諸兄方には当たり前すぎることかと存じますが、
何かのお役に立てれば幸いです。

よろしくお願いいたします。

投稿2021/09/07 11:50

hideaki_nakashi

総合スコア0

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

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

0

driver.switch_to.frame("●●●●")

でありそうな名前noフレームへの遷移を試しましたが

frameで指定するのは名前?じゃなく、frameタグ要素、iframeタグ要素です。

Python

1driver.switch_to_frame(driver.find_element_~~~("~~~"))

投稿2021/09/02 04:51

otn

総合スコア84804

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

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

hideaki_nakashi

2021/09/02 08:17

otn様 早急なご助言ありがとうございます。 frameの構文から違うとのご指摘ありがとうございます。しかしながら、やはり元のページに<frame~>の要素がないのですが、それでも要素がないのはフレームである可能性はございますでしょうか。
otn

2021/09/02 08:25

> やはり元のページに<frame~>の要素がないのですが、それでも要素がないのはフレーム frameもiframeもないのであれば、フレームでないのは自明です。 私なら、 name = driver.find_element_by_xpath(~~) の直前にinput() を入れて処理を一時停止し、 (デバッガーが使えるならデバッガーで一時停止でも) そのときのブラウザの開発者ツールでHTMLを確認します。 おそらくXPathが間違っている。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問