Я сейчас очищаю страницу, отформатированную так:
<div id="container>
<script>Script that cause iframe contents to load correctly</script>
<iframe>Contents of iFrame</iframe>
<script>More scripts</script>
</div>
Я могу легко очистить страницу, но это не очищает содержимое iframe, поэтому я переключил кадры с помощью:
driver.switch_to.frame(iframeElement)
И это позволяет мне получить содержимое iframe. Это подводит меня к моему вопросу о том, как я могу взять контейнер div и вставить содержимое очищенного iframe в очищенный div. При настройке страницы прямо перед iframe существуют динамические сценарии, которые позволяют содержимому iframe работать, поэтому мне нужно встроить содержимое iframe в извлеченный div.
Соответствующий Python ниже:
driver.get(url)
iframeElement = driver.find_element_by_tag_name('iframe')
driver.switch_to.frame(iframeElement)
time.sleep(3) #Wait for the contents to generate
# driver.switch_to_default_content() #Commented out, but I know to use this to exit out of the iframe
html = driver.page_source
soup=BeautifulSoup(html, features="lxml")
print(soup)
print(soup.find("div", {"id": "Container"})) #Let's see the HTML of the container
soupStr=str(soup)
Con = str(soup.find("div", {"id": "Container"})) #Create a variable with JUST the container HTML
with open('iframeWithinDiv.html', 'w', encoding='utf-8') as f_out: #Save the file
f_out.write(soupStr)```