摘要:在使用截圖時,遇上無法加載,導(dǎo)致了截圖是空白區(qū)。否則無法直接修改的設(shè)置。
在使用 selenium + chromeDriver + python3 截圖時,遇上 Flash 無法加載,導(dǎo)致了截圖 Falsh 是空白區(qū)。
環(huán)境要求:selenium chromeDriver Python3
問題chrome 無頭瀏覽器無法自動加載 Flash
解決辦法參考了 allow-flash-content-in-chrome-69-running-via-chromedriver 的回答,直接修改 Chrome 的設(shè)置 chrome://settings/content/siteDetails?site= 里面的 Flash 設(shè)置,修改為 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 = ""): # 設(shè)置窗口大小 self.window_width = 1680 self.window_height = 948 # 設(shè)置 chromedriver 位置 self.executable_path = "/usr/local/bin/chromedriver" # 設(shè)置 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" # 創(chuàng)建參數(shù)對象 options = webdriver.ChromeOptions() prefs = { # 開啟圖片 "profile.managed_default_content_settings.images":1, # 關(guān)閉 Notification "profile.default_content_setting_values.notifications": 2, } # 設(shè)置 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") # 規(guī)避bug options.add_argument("--disable-gpu") # 禁用彈出攔截 options.add_argument("--disable-popup-blocking") # 隱藏自動軟件 options.add_argument("disable-infobars") # 設(shè)置中文 options.add_argument("lang=zh_CN.UTF-8") #忽略 Chrome 瀏覽器證書錯誤報(bào)警提示 options.add_argument("--ignore-certificate-errors") # 更換頭部 options.add_argument("user-agent=" + user_agent) options.add_argument("no-default-browser-check") # 關(guān)閉特征變量 options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option("prefs", prefs) # 創(chuàng)建 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)最后
不能使用無界面模式,不能設(shè)置 handless 參數(shù) options.add_argument("--headless")。否則無法直接修改 Chrome 的設(shè)置。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43636.html
摘要:下一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)請求庫安裝爬蟲可以簡單分為幾步抓取頁面分析頁面存儲數(shù)據(jù)。相關(guān)鏈接官方網(wǎng)站官方文檔中文文檔安裝驗(yàn)證安裝進(jìn)入命令行交互模式,導(dǎo)入一下包,如果沒有報(bào)錯,則證明安裝成功。 下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---2、請求庫安裝:GeckoDriver、PhantomJS、Aiohttp 爬蟲可以簡單分為幾步:抓取頁面、分析頁面、存儲數(shù)據(jù)。 在第一步抓取頁面的過程中,...
摘要:上一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)請求庫安裝下一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)解析庫的安裝的安裝在上一節(jié)我們了解了的配置方法,配置完成之后我們便可以用來驅(qū)動瀏覽器來做相應(yīng)網(wǎng)頁的抓取。上一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)請求庫安裝下一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)解析庫的安裝 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---1、請求庫安裝:Requests、Selenium、ChromeDriver下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)--...
摘要:若不出現(xiàn)下方界面則跳過此步啟動后,錯誤提示丟失。處理方法下載安裝運(yùn)行庫即可。調(diào)出命令窗口并輸入出現(xiàn)下圖顯示內(nèi)容則表示版本安裝成功。將放在盤中文件夾下的,如果是位系統(tǒng)則放在中四打開檢驗(yàn)環(huán)境是否搭建成功出現(xiàn)下方界面則表示搭建成功 一、Python安裝1、Python3官網(wǎng)下載https://www.python.org/downlo... 2、選擇對應(yīng)系統(tǒng)和版本(注意是32位還是64位,我...
閱讀 1886·2021-11-12 10:36
閱讀 2320·2021-09-01 10:29
閱讀 2354·2019-08-30 15:56
閱讀 1024·2019-08-30 12:56
閱讀 2355·2019-08-26 13:58
閱讀 2273·2019-08-23 18:38
閱讀 1494·2019-08-23 18:32
閱讀 2110·2019-08-23 16:53