yuhtaryouko
@yuhtaryouko (Yuta Kato)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

iframeタグのあるページのスクレイピング

iframeタグが使われているページのスクレイピングがうまくいきません。

自分なりに調べて、「iframeタグがある場合はそれによって別ページに遷移しているようなものだから、新しい遷移先のurl・htmlをスクレイピングする必要がある」というように理解しました。

発生している問題・エラー

import selenium
from selenium import webdriver
from time import sleep
import chromedriver_binary

browser = webdriver.Chrome()

url = 'xxxxxxxxxxxxxxxxxxxxx'
browser.get(url)

iframe = browser.find_elements_by_tag_name('iframe')
print(iframe)

ここまででprintの中身を調べると
[<selenium.webdriver.remote.webelement.WebElement (session="81145f08397096cd0275ebdd654a6385", element="a9222e1c-9c00-4b06-876d-xxxxxxxxxxxx")>, <selenium.webdriver.remote.webelement.WebElement (session="81145f08397096cd0275ebdd654a6385", element="b1caeb4b-52ab-4d4b-xxxxxxxxxxxx")>]

というような状態です。そもそもこれが正しいのかが分からないです。

また

import selenium
from selenium import webdriver
from time import sleep
import chromedriver_binary

browser = webdriver.Chrome()

url = 'xxxxxxxxxxxxxxxxxxxxx'
browser.get(url)

iframe = browser.find_elements_by_tag_name('iframe')
browser.switch_to.frame(iframe)

というコードでiframe先に遷移しようとしましたが、それを行うと

image.png

上記のようなエラーが出てしまいます。

自分で試したこと

【iframe beautifulsoup】でGoogle検索したページに書かれていることを色々試してみたのですがうまくいきません。

0

1Answer

switch_to.frame()にリストを渡しているのがエラーの原因だと思います。
find_elements_...は複数の要素のリストを返すので、インデックスをつけるかfind_element...を使い要素を1つだけ選択できます。

0Like

Comments

  1. @yuhtaryouko

    Questioner

    ありがとうございます!無事にやりたいことができました!

Your answer might help someone💌