摘要:在使用截图时,遇上无法加载,导致了截图是空白区。否则无法直接修改的设置。
在使用 selenium + chromeDriver + python3 截图时,遇上 Flash 无法加载,导致了截图 Falsh 是空白区。
环境要求:selenium chromeDriver Python3
问题chrome 无头浏览器无法自动加载 Flash
解决办法参考了 allow-flash-content-in-chrome-69-running-via-chromedriver 的回答,直接修改 Chrome 的设置 chrome://settings/content/siteDetails?site= 里面的 Flash 设置,修改为 Allow
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select class chromeDriver(): def __init__(self, driver = ""): # 设置窗口大小 self.window_width = 1680 self.window_height = 948 # 设置 chromedriver 位置 self.executable_path = "/usr/local/bin/chromedriver" # 设置 Flash 的路径 self.flash_path = "/Users/cindy/Library/Application Support/Google/Chrome/PepperFlash/32.0.0.171/PepperFlashPlayer.plugin" # 获取 driver if driver: self.driver = driver else: self.driver = self.get_chrome_driver() def get_chrome_driver(self): # 头部 user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" # 创建参数对象 options = webdriver.ChromeOptions() prefs = { # 开启图片 "profile.managed_default_content_settings.images":1, # 关闭 Notification "profile.default_content_setting_values.notifications": 2, } # 设置 Flash 的路径 options.add_argument("--ppapi-flash-version=32.0.0.171") options.add_argument("--ppapi-flash-path=" + self.flash_path) options.add_argument("binary_location=/Applications/Google Chrome.app/Contents/MacOS/Google Chrome") # 指定屏幕分辨率 options.add_argument("window-size=" + str(self.window_width) + "x" + str(self.window_height) + """) # 最大化窗口 options.add_argument("--start-maximized") # 规避bug options.add_argument("--disable-gpu") # 禁用弹出拦截 options.add_argument("--disable-popup-blocking") # 隐藏自动软件 options.add_argument("disable-infobars") # 设置中文 options.add_argument("lang=zh_CN.UTF-8") #忽略 Chrome 浏览器证书错误报警提示 options.add_argument("--ignore-certificate-errors") # 更换头部 options.add_argument("user-agent=" + user_agent) options.add_argument("no-default-browser-check") # 关闭特征变量 options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option("prefs", prefs) # 创建 Chrome 对象 driver = webdriver.Chrome(options = options, executable_path = self.executable_path) return driver def get(self, web_url): if not web_url: return False return self.driver.get(web_url) def add_flash_site(self, web_url): if not web_url: return False self.get("chrome://settings/content/siteDetails?site=" + web_url) root1 = self.driver.find_element(By.TAG_NAME, "settings-ui") shadow_root1 = self.expand_root_element(root1) root2 = shadow_root1.find_element(By.ID, "container") root3 = root2.find_element(By.ID, "main") shadow_root3 = self.expand_root_element(root3) shadow_root3 = self.expand_root_element(root3) root4 = shadow_root3.find_element(By.CLASS_NAME, "showing-subpage") shadow_root4 = self.expand_root_element(root4) root5 = shadow_root4.find_element(By.ID, "advancedPage") root6 = root5.find_element(By.TAG_NAME, "settings-privacy-page") shadow_root6 = self.expand_root_element(root6) root7 = shadow_root6.find_element(By.ID, "pages") root8 = root7.find_element(By.TAG_NAME, "settings-subpage") root9 = root8.find_element(By.TAG_NAME, "site-details") shadow_root9 = self.expand_root_element(root9) root10 = shadow_root9.find_element(By.ID, "plugins") shadow_root10 = self.expand_root_element(root10) root11 = shadow_root10.find_element(By.ID, "permission") Select(root11).select_by_value("allow") def expand_root_element(self, element): return self.driver.execute_script("return arguments[0].shadowRoot", element) def get_flash_url(self, web_url): if not web_url: return False self.add_flash_site(web_url) self.get(web_url) def quit_driver(self): self.driver.quit() driver = chromeDriver() url = "http://your.website/" driver.get_flash_url(url)最后
不能使用无界面模式,不能设置 handless 参数 options.add_argument("--headless")。否则无法直接修改 Chrome 的设置。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/43636.html
摘要:下一篇文章网络爬虫实战请求库安装爬虫可以简单分为几步抓取页面分析页面存储数据。相关链接官方网站官方文档中文文档安装验证安装进入命令行交互模式,导入一下包,如果没有报错,则证明安装成功。 下一篇文章:Python3网络爬虫实战---2、请求库安装:GeckoDriver、PhantomJS、Aiohttp 爬虫可以简单分为几步:抓取页面、分析页面、存储数据。 在第一步抓取页面的过程中,...
摘要:上一篇文章网络爬虫实战请求库安装下一篇文章网络爬虫实战解析库的安装的安装在上一节我们了解了的配置方法,配置完成之后我们便可以用来驱动浏览器来做相应网页的抓取。上一篇文章网络爬虫实战请求库安装下一篇文章网络爬虫实战解析库的安装 上一篇文章:Python3网络爬虫实战---1、请求库安装:Requests、Selenium、ChromeDriver下一篇文章:Python3网络爬虫实战--...
摘要:若不出现下方界面则跳过此步启动后,错误提示丢失。处理方法下载安装运行库即可。调出命令窗口并输入出现下图显示内容则表示版本安装成功。将放在盘中文件夹下的,如果是位系统则放在中四打开检验环境是否搭建成功出现下方界面则表示搭建成功 一、Python安装1、Python3官网下载https://www.python.org/downlo... 2、选择对应系统和版本(注意是32位还是64位,我...
阅读 1816·2021-11-12 10:36
阅读 2246·2021-09-01 10:29
阅读 2274·2019-08-30 15:56
阅读 977·2019-08-30 12:56
阅读 2256·2019-08-26 13:58
阅读 2147·2019-08-23 18:38
阅读 1442·2019-08-23 18:32
阅读 2021·2019-08-23 16:53