プロが教える店舗&オフィスのセキュリティ対策術

PythonとSeleniumでWebスクレイピングのアプリを作っています。

手動時に調べた要素を取得しようとしましたが、見つからないとのエラーになります。
その原因は標記したものです。

環境は、つぎのとおりです。
OS: Windows 11 Pro. 64bit 22H2
Python: 3.10.5
Selenium: 4.3.0
Chrome:119.0.6045.200

この原因と対策方法をご教示おねがいします。

質問者からの補足コメント

  • どう思う?

    問題の画面は、その前の画面のボタンのクリックで表示され、前の画面とは別タブに表示されています。

    表示画面のHTMLソースの内容とは下記のものです。
    1. 問題の画面を表示した後、十分待機して次のステートメントで表示したもの
      print(driver.page_source)
    2. Chromeの右クリックでの[ページのソースを表示]によるもの
    上記の2の内容は、当然表示されている画面のソースですが、1はそれとは全く異なる別ページのものと思われます。

      補足日時:2023/12/10 13:40
  • HAPPY

    アドバイスにより、[開発者ツール]を少し学習し、今までより踏み込んだ使い方をしてみました。
    その結果、幸いに要素を取得することに成功しました。

    サポートありがとうございました。

    No.3の回答に寄せられた補足コメントです。 補足日時:2023/12/13 15:48

A 回答 (3件)

ちょっと認識が間違っています。


> 1. 問題の画面を表示した後、十分待機して次のステートメントで表示したもの print(driver.page_source)

これが、画面に今表示されているページのHTMLです。

> 2. Chromeの右クリックでの[ページのソースを表示]によるもの

これは、最初にWebサーバーから取得したHTMLです。多くのページはその後、JavaScriptが動作してHTML書き換えて、書き換えた結果が 1 のHTMLです。

Seleniumを使ったプログラムの開発は、driver.get(URL)したあとで、一旦プログラムを中断し(デバッガーを使うとか、input("go next") 等を実行して入力待ちで止めるとか)、その時のブラウザ画面で「開発者ツール」を起動して(ChromeだとF12キーを押す)、開発者ツール画面でHTML(概ね上記の1相当)を見てそれを元にコーディングします。

正確に言うと、「画面に今表示されているページのHTML」は、driver.page_sourceのHTMLではなくて、開発者ツールで参照できるHTMLです。driver.page_sourceのHTML、つまり、Seleniumでdriver.find_element~~で見つけられる物は、それからiframeやシャドウDOMの中味を除いた物になります。
画面や開発者ツールの中はあるけど、その瞬間のdriver.page_sourceに無いものは、それらの中にあるタグかも知れないので、その中を探すコードに修正する必要がありますので、その場合は、iframeやシャドウDOMについて調べましょう。
この回答への補足あり
    • good
    • 0
この回答へのお礼

サポートありがとうございます。

初心者の私に貴重な知識を与えて頂きました。
初心者故に回答頂いた内容はまだ良く理解できていません。

単刀直入に質問させて頂きます。
先の2に存在する下記ソースの文字列 "2023年12月11日現在" を1から取得することは可能ですか?
可能であれば、その方法をご教示お願いします。

<table width="600" border="0" cellpadding="2" cellspacing="0">
<tr>
<td align="right"><font size="-1">2023年12月11日現在<br>
<br></font></td>
</tr>
</table>

よろしくお願いします、

お礼日時:2023/12/12 20:52

こんにちは



事象だけしか情報がないので、原因の特定は難しいと思いますが・・

ありそうなのは、取得したい要素が、あとからスクリプト等で生成されるものである場合、スクリプトの実行完了前に取得しようとすれば、要素は(まだ存在しないので)見つからないことになります。
あるいは、単純にソースの読み込みに時間がかかっているような場合、それを待たなければ同様のことが起こり得ます。
当該ページのソースを確認すれば、どちらのケースの可能性であるかは判断できるでしょう。

以下、ご参考にでもなれば・・
https://www.fenet.jp/dotnet/column/language/7851/
https://blog.ikedaosushi.com/entry/2018/08/08/00 …
    • good
    • 0

Cookieの有無で表示内容が異なるとか。



User AgentでPCとスマホを区別しているとか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A