Как очистить div и содержимое iframe внутри div, используя Selenium и BeautifulSoup? - PullRequest
2 голосов
/ 12 апреля 2019

Я сейчас очищаю страницу, отформатированную так:

<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)```

1 Ответ

0 голосов
/ 12 апреля 2019

Вы можете добавить его в следующий div, используя execute_script и немного jquery (вместо этого вы можете использовать чистый JS):)

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"}))1

#### Append your variable to the given string within wrap ###

driver.execute_script("$('#container').val('newhtmlcontent')")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...