欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python?selenium參數(shù)詳解和實(shí)現(xiàn)案例

 更新時(shí)間:2022年10月25日 11:26:40   作者:Vergil_Zsh  
這篇文章主要介紹了python?selenium參數(shù)詳解和實(shí)現(xiàn)案例,無頭模式添加,可以讓selenium模擬登錄,進(jìn)入到后臺(tái)運(yùn)行,本文以登錄打開公司內(nèi)網(wǎng)下載數(shù)據(jù)為例,給大家詳細(xì)講解,需要的朋友可以參考下

無頭模式添加,可以讓selenium模擬登錄,進(jìn)入到后臺(tái)運(yùn)行
這里以登錄打開公司內(nèi)網(wǎng)下載數(shù)據(jù)為例,因?yàn)樯婕八矫軉栴},所以有些地方我們進(jìn)行覆蓋,還請(qǐng)諒解
先不添加無頭模式,進(jìn)行登錄,并且下載文件
因?yàn)橐话鉺elenium使用的是之前版本的瀏覽器,所以會(huì)出現(xiàn)以下情況,需要進(jìn)行安全認(rèn)證,所以可以進(jìn)行直接忽略認(rèn)證書的錯(cuò)誤

一般是在selenium的options進(jìn)行添加

options.add_argument('ignore-certificate-errors')

登錄界面

可以看到上面有很多目錄點(diǎn)擊過來的,要求下載所有的含有日?qǐng)?bào)的excel,需進(jìn)行小框選擇后,才會(huì)出現(xiàn)下載按鈕

下載一般是直接下載到瀏覽器默認(rèn)的地址,這里我們可以進(jìn)行自主修改,還是在options里進(jìn)行配置,函數(shù)如下

# 設(shè)置默認(rèn)地址
prefs = {'download.default_directory': r'D:\desktop\test_download'}
options.add_experimental_option('prefs', prefs)

完整代碼如下

# 導(dǎo)入所需要的庫
import time
import json
import warnings
from selenium import webdriver
from sqlalchemy import create_engine
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 運(yùn)行時(shí)terminal里面會(huì)出現(xiàn)好多警告,剔除警告
warnings.filterwarnings('ignore')
class Download():
	def __init__(self, url, year, path, chrome, username, password, elements):
		self.year = year
		self.url = url
		self.path = path
		self.chrome = chrome
		self.username = username
		self.password = password
		self.elements = elements
	# 瀏覽器設(shè)置
	def web_sets(self):
		self.options = webdriver.ChromeOptions()
		# 因?yàn)槲沂褂玫氖枪雀铻g覽器
		self.c_service = Service(f'{self.chrome}')
		self.c_service.command_line_args()
		# 設(shè)置后端服務(wù)器開始,因?yàn)闀?huì)在后臺(tái)產(chǎn)生好多服務(wù),為了后面的關(guān)閉
		self.c_service.start()
		# 提供默認(rèn)下載地址
		self.prefs = {'download.default_directory': f'{self.path}'}
		self.options.add_experimental_option('prefs', self.prefs)
		# 設(shè)置忽略安全證書所帶來的錯(cuò)誤
		self.options.add_argument('ignore-certificate-errors')
		# 一些小的設(shè)置
		self.options.add_experimental_option('excludeSwitches', ["enable-automation"])
		self.options.add_argument('--np-sanbox')
		self.options.add_argument('--disable-dev-shm-usage')
		# 加屬性避免bug
		self.options.add_argument('disable-gpu')
		# 添加無頭模式
		self.options.add_argument('headless')
		self.br = webdriver.Chrome(f'{self.chrome}', chrome_options=self.options)
		self.br.implicitly_wait(3)
	def loginPage(self):
		"""
		因?yàn)槲沂菍⑺性乇4嬖趈son文件里面,這樣就不需要因?yàn)閒ind_element而占用好多列
		也為代碼節(jié)省地方
		這里需要強(qiáng)調(diào)的時(shí)find_element(By.XPATH)是最新selenium的使用方法,之前的使用會(huì)報(bào)錯(cuò)
		"""
		self.br.get(self.url)
		time.sleep(4)
		self.br.find_element(By.XPATH, f'{self.elements[keys[2]]}').send_keys(self.username)
		time.sleep(2)
		self.br.find_element(By.XPATH, f'{self.elements[keys[3]]}').send_keys(self.password)
		time.sleep(2)
		self.br.find_element(By.XPATH, f'{self.elements[keys[4]]}').click()
		time.sleep(2)
	# 設(shè)置跳轉(zhuǎn)到最后頁面
	def skipPage(self, url):
		self.br.get(url)
		time.sleep(2)

	# 下載文件
	def download_excel(self):
		# 獲取所有ul下面的li標(biāo)簽個(gè)數(shù)
		ul2 = self.br.find_element(By.XPATH, f'{self.elements[keys[6]]}')
		# 獲取li標(biāo)簽數(shù)目
		lis2 = ul2.find_elements(By.XPATH, 'li')
		time.sleep(1)
		# 循環(huán)li標(biāo)簽
		for j in range(len(lis2)):
			# 因?yàn)閘i的elements都是從1開始,python列表是從0開始,所以要+1
			j+=1
			# 獲取li標(biāo)簽的text
			name = self.br.find_element(By.XPATH, f'{self.elements[keys[7]][1]}'%j).get_attribute('title')
			print(f'li標(biāo)簽name: {name}')
			if '日?qǐng)?bào)' in name:
				print(f'第二遍過濾name: {name}')
				li_test = self.br.find_element(By.XPATH, f'{self.elements[keys[8]]}'%j)
				self.br.execute_script('arguments[0].click();',li_test)
				time.sleep(0.5)
				self.br.find_element(By.XPATH, f'{self.elements[keys[9]]}').click()
				time.sleep(0.5)
				li_test2 = self.br.find_element(By.XPATH, f'{self.elements[keys[8]]}'%j)
				time.sleep(1)
				# 設(shè)置點(diǎn)擊覆蓋,以防止報(bào)錯(cuò)
				# 因?yàn)橐恢币M點(diǎn)擊選擇文件,然后進(jìn)行下載文件,防止點(diǎn)擊覆蓋
				self.br.execute_script("arguments[0].click();", li_test2)
				time.sleep(8)
		time.sleep(10)
		time.sleep(12)
		# 退出瀏覽器,推出后臺(tái)服務(wù)
		# c_service.stop()對(duì)應(yīng)之前的c_service.stop()
		self.br.quit();self.c_service.stop()

JSON文件

json文件

ul標(biāo)簽的展示

li標(biāo)簽下的title

獲取li標(biāo)簽內(nèi)div的title

在這里順便講下如何獲取xpath的絕對(duì)路徑或者相對(duì)路徑

展示下ul標(biāo)簽相對(duì)路徑和絕對(duì)路徑

xpath: //*[@id="main"]/div[2]/div/div[3]/div[1]/as-dataview/div[2]/ul
full_xpath: /html/body/div[2]/div[1]/div[2]/div/div[1]/div[2]/div/div[3]/div[1]/as-dataview/div[2]/ul

下圖是沒有c_service.stop(),后臺(tái)運(yùn)行服務(wù),不能進(jìn)行關(guān)閉

運(yùn)行代碼

if __name__ == '__main__':
	jsonFile = r'JsonFile\elements.json'
	with open(jsonFile, 'r') as f:
		row_data = json.load(f)
	# 獲取所有json的鍵
	keys = list(row_data.keys())
	# 讀取賬號(hào)和密碼
	filename = row_data[keys[0]]
	# 獲取賬號(hào)和密碼txt
	with open(filename, 'r') as f:
		data = f.read()
	data1 = data.split('\n')
	url = 'url'
	# chromedriver.exe
	chrome = r'chromedriver.exe'
	username = data1[0]
	password = data1[1]
	path = row_data[keys[1]]
	year = time.gmtime().tm_year
	start = Download(url, year, path, chrome, username, password, row_data)
	start.web_sets()
	start.loginWeb()
	e = row_data[keys[5]]
	start.skipPage(e)
	start.download_excel()
	time.sleep(15)

為了展示出來 取消掉無頭模式 這樣可以看到瀏覽器進(jìn)行下載

可以看到只有含有’日?qǐng)?bào)’的數(shù)據(jù)被下載了,并且任務(wù)管理器里面沒有剛才出現(xiàn)的Chrome32的服務(wù)

到此這篇關(guān)于python selenium參數(shù)詳解和實(shí)現(xiàn)案例的文章就介紹到這了,更多相關(guān)python selenium參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python+Pygame繪制小球的實(shí)例詳解

    Python+Pygame繪制小球的實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python?Pygame繪制小球(漸變大的小球、自由下落的小球、循環(huán)上下反彈的小球),感興趣的小伙伴可以了解一下
    2022-10-10
  • python中停止線程的方法代碼舉例

    python中停止線程的方法代碼舉例

    在Python中停止線程有多種方法,包括使用全局變量、使用標(biāo)志位、使用異常等,下面這篇文章主要給大家介紹了關(guān)于python中停止線程方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • Python中itertools模塊用法詳解

    Python中itertools模塊用法詳解

    這篇文章主要介紹了Python中itertools模塊用法,詳細(xì)的講述了itertools模塊中常見函數(shù)的用法及相關(guān)示例,有助于深入掌握Python程序設(shè)計(jì),需要的朋友可以參考下
    2014-09-09
  • python3之模塊psutil系統(tǒng)性能信息使用

    python3之模塊psutil系統(tǒng)性能信息使用

    psutil是個(gè)跨平臺(tái)庫,能夠輕松實(shí)現(xiàn)獲取系統(tǒng)運(yùn)行的進(jìn)程和系統(tǒng)利用率,這篇文章主要介紹了python3之模塊psutil系統(tǒng)性能信息使用,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 在Python的Django框架中simple-todo工具的簡(jiǎn)單使用

    在Python的Django框架中simple-todo工具的簡(jiǎn)單使用

    這篇文章主要介紹了在Python的Django框架中simple-todo工具的簡(jiǎn)單使用,該工具基于原web.py中的開源項(xiàng)目,需要的朋友可以參考下
    2015-05-05
  • Python實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)采集新型冠狀病毒數(shù)據(jù)實(shí)例

    Python實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)采集新型冠狀病毒數(shù)據(jù)實(shí)例

    在本篇文章里小編給大家整理了關(guān)于Python實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)采集新型冠狀病毒數(shù)據(jù)實(shí)例內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。
    2020-02-02
  • Python筆記之代理模式

    Python筆記之代理模式

    這篇文章主要為大家詳細(xì)介紹了Python筆記之代理模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Django各種緩存的配置小結(jié) ?

    Django各種緩存的配置小結(jié) ?

    本文主要介紹了Django各種緩存的配置小結(jié) ,Django提供了多種緩存后端,如內(nèi)存緩存、文件緩存、數(shù)據(jù)庫緩存、Memcached和Redis等,根據(jù)項(xiàng)目需求選擇合適的緩存后端,下面就一起來了解一下吧
    2023-08-08
  • Python多線程批量采集圖片的代碼實(shí)現(xiàn)

    Python多線程批量采集圖片的代碼實(shí)現(xiàn)

    這篇文章主要給大家介紹了Python多線程批量采集圖片的代碼實(shí)現(xiàn),文中通過代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-05-05
  • 基于Python Dash庫制作酷炫的可視化大屏

    基于Python Dash庫制作酷炫的可視化大屏

    在數(shù)據(jù)時(shí)代,我們每個(gè)人既是數(shù)據(jù)的生產(chǎn)者,也是數(shù)據(jù)的使用者,然而初次獲取和存儲(chǔ)的原始數(shù)據(jù)雜亂無章、信息冗余、價(jià)值較低。要想數(shù)據(jù)達(dá)到生動(dòng)有趣、讓人一目了然、豁然開朗的效果,就需要借助數(shù)據(jù)可視化。本文將介紹通過Dash庫制作酷炫的可視化大屏!需要的可以參考下
    2021-12-12

最新評(píng)論