从网站请求完全用JavaScript呈现的html源,并找到所有iframe广告代码

用户8922432

我目前正在尝试使用硒和BeautifulSoup从网站检索所有iframe标签。问题是我没有得到所有的iframe,因为在BS4中没有搜索的网页中存在内部html文档,而且我不认为javascript正在HTML中执行,因此可能有些HTML元素没有被渲染。是否有一个网络抓取工具,该工具可让我请求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()
DebanjanB

您可以使用以下代码块<iframe>专门获取所有标签Selenium

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

我的控制台上的输出是:

Frames detected through iframe tag are [<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="ead39d06-0e39-4b40-9425-a86a1fe88d4f")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="1ce10f29-a620-4ce6-90e1-9da563046c70")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="ba8493e4-8246-47a0-9ed4-3f51b8c0f133")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="19c0f134-c243-47bd-96d1-6b06ff66a011")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="95d78fa6-fb4f-4b7c-89c5-9b85965f0e4c")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="e6d2d931-1f35-432f-8825-052e244fe798")>]
Frames detected through xpath are [<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="ead39d06-0e39-4b40-9425-a86a1fe88d4f")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="1ce10f29-a620-4ce6-90e1-9da563046c70")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="ba8493e4-8246-47a0-9ed4-3f51b8c0f133")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="19c0f134-c243-47bd-96d1-6b06ff66a011")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="95d78fa6-fb4f-4b7c-89c5-9b85965f0e4c")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="e6d2d931-1f35-432f-8825-052e244fe798")>]
Frames detected through css are [<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="ead39d06-0e39-4b40-9425-a86a1fe88d4f")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="1ce10f29-a620-4ce6-90e1-9da563046c70")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="ba8493e4-8246-47a0-9ed4-3f51b8c0f133")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="19c0f134-c243-47bd-96d1-6b06ff66a011")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="95d78fa6-fb4f-4b7c-89c5-9b85965f0e4c")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="98594106-54a6-4941-a6ab-cd9d92e9afa2", element="e6d2d931-1f35-432f-8825-052e244fe798")>]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Google 广告 dfp js 代码未呈现所有广告位

请求未显示网站代码的所有元素

Google封锁了我的网站:所有* .js文件均被感染。如何找到一个感染我的JavaScript代码的进程?

如何使用iFrame完全导入网站源

从使用 React 的网站获取所有 HTML 代码

HTML代码作为IFRAME源而不是URL

使用phantomjs获取JavaScript呈现的html源

HTML代码中的iframe无法加载网站

为什么请求不返回所有 HTML 代码

Flutter WebView:从呈现的 URL 中检索所有完全生成的 html(类似于“检查元素”)

使用Perl从html文件中的iframe广告代码加载数据

iframe不会显示所有网站

遍历嵌套的广告组,直到找到所有成员

更改iFrame广告代码的高度

异步加载所有Technorati脚本广告代码

使用 iframe 呈现用户提供的 html 代码

用Python抓取JavaScript呈现的网站的“脚本部分”

访问网站时如何查找浏览器发出的所有JavaScript请求

使用Shopify API请求在自定义网站上使用JavaScript获取所有产品

Ajax请求正在返回代码,而不是呈现的html

Beautifulsoup,urllib2和请求未从9gag.com找到所有HTML标记

Javascript更改所有数组元素的HTML代码

用Javascript计算HTML文档中的所有字符

并非在Netbeans中找到所有JDK源

更改所有html代码

我可以通过Requests-html获取所有请求的状态代码(或替代硒)

用javascript加载html代码

Java的化妆调用网站,并找到所有照片

如何找到我网站的所有API?