从网站请求完全javascript呈现的html源代码,并查找所有iframe标记

2024-04-25 22:52:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试使用selenium和BeautifulSoup从一个网站检索所有iframe标签。问题是我没有得到所有的iframe,因为BS4没有在网页中搜索到内部html文档,而且我不相信javascript是在html中执行的,所以可能有一些html元素没有被呈现。有没有一个web抓取工具可以让我请求一个url,检索完整的js呈现的HTML文件,然后在DOM中搜索并获得与iframe匹配的所有标记,即使是在内部HTML代码中。在

基本上,我可以在chrome inspector工具中看到我想要的所有标签,但是它们没有出现在BS4中find_all('iframe')函数检索到的列表中。在

下面是我的代码:

from bs4 import BeautifulSoup

import requests

from selenium import webdriver

browser = webdriver.Chrome('C:/Users/G/chromedriver.exe')

browser.get("https://reddit.com")

HTML = browser.page_source

innerHTML = browser.execute_script("return document.body.innerHTML")

page = BeautifulSoup(innerHTML, 'html.parser')

for iframe in page.find_all('iframe'):
    print(iframe)

browser.close()

Tags: 工具代码importbrowserhtmlseleniumpage标签
1条回答
网友
1楼 · 发布于 2024-04-25 22:52:03

您可以使用以下代码块通过Selenium独占地获取所有<iframe>标记:

from selenium import webdriver

browser = webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
browser.get("https://reddit.com")
frames_tag = browser.find_elements_by_tag_name("iframe")
frames_xpath = browser.find_elements_by_xpath("//iframe")
frames_css = browser.find_elements_by_css_selector("iframe")
print("Frames detected through iframe tag are %s" %frames_tag)
print("Frames detected through xpath are %s" %frames_xpath)
print("Frames detected through css are %s" %frames_css)
browser.quit()

我的控制台上的输出是:

^{pr2}$

相关问题 更多 >