最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

無頭模式添加,可以讓selenium模擬登錄,進入到后臺運行
這里以登錄打開公司內(nèi)網(wǎng)下載數(shù)據(jù)為例,因為涉及私密問題,所以有些地方我們進行覆蓋,還請諒解
先不添加無頭模式,進行登錄,并且下載文件
因為一般selenium使用的是之前版本的瀏覽器,所以會出現(xiàn)以下情況,需要進行安全認證,所以可以進行直接忽略認證書的錯誤

一般是在selenium的options進行添加

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

登錄界面

可以看到上面有很多目錄點擊過來的,要求下載所有的含有日報的excel,需進行小框選擇后,才會出現(xiàn)下載按鈕

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

# 設(shè)置默認地址
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
# 運行時terminal里面會出現(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()
		# 因為我使用的是谷歌瀏覽器
		self.c_service = Service(f'{self.chrome}')
		self.c_service.command_line_args()
		# 設(shè)置后端服務(wù)器開始,因為會在后臺產(chǎn)生好多服務(wù),為了后面的關(guān)閉
		self.c_service.start()
		# 提供默認下載地址
		self.prefs = {'download.default_directory': f'{self.path}'}
		self.options.add_experimental_option('prefs', self.prefs)
		# 設(shè)置忽略安全證書所帶來的錯誤
		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):
		"""
		因為我是將所有元素保存在json文件里面,這樣就不需要因為find_element而占用好多列
		也為代碼節(jié)省地方
		這里需要強調(diào)的時find_element(By.XPATH)是最新selenium的使用方法,之前的使用會報錯
		"""
		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標簽個數(shù)
		ul2 = self.br.find_element(By.XPATH, f'{self.elements[keys[6]]}')
		# 獲取li標簽數(shù)目
		lis2 = ul2.find_elements(By.XPATH, 'li')
		time.sleep(1)
		# 循環(huán)li標簽
		for j in range(len(lis2)):
			# 因為li的elements都是從1開始,python列表是從0開始,所以要+1
			j+=1
			# 獲取li標簽的text
			name = self.br.find_element(By.XPATH, f'{self.elements[keys[7]][1]}'%j).get_attribute('title')
			print(f'li標簽name: {name}')
			if '日報' 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è)置點擊覆蓋,以防止報錯
				# 因為一直要模擬點擊選擇文件,然后進行下載文件,防止點擊覆蓋
				self.br.execute_script("arguments[0].click();", li_test2)
				time.sleep(8)
		time.sleep(10)
		time.sleep(12)
		# 退出瀏覽器,推出后臺服務(wù)
		# c_service.stop()對應(yīng)之前的c_service.stop()
		self.br.quit();self.c_service.stop()

JSON文件

json文件

ul標簽的展示

li標簽下的title

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

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

展示下ul標簽相對路徑和絕對路徑

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(),后臺運行服務(wù),不能進行關(guā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())
	# 讀取賬號和密碼
	filename = row_data[keys[0]]
	# 獲取賬號和密碼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)

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

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

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

相關(guān)文章

  • python排序方法實例分析

    python排序方法實例分析

    這篇文章主要介紹了python排序方法,實例分析了Python實現(xiàn)默認排序、降序排序及按照key值排序的相關(guān)技巧,非常簡單實用,需要的朋友可以參考下
    2015-04-04
  • Pycharm激活方法及詳細教程(詳細且實用)

    Pycharm激活方法及詳細教程(詳細且實用)

    這篇文章主要介紹了Pycharm激活方法及詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-05-05
  • Python基礎(chǔ)教程之tcp socket編程詳解及簡單實例

    Python基礎(chǔ)教程之tcp socket編程詳解及簡單實例

    這篇文章主要介紹了Python基礎(chǔ)教程之tcp socket編程詳解及簡單實例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 利用python修改json文件的value方法

    利用python修改json文件的value方法

    今天小編就為大家分享一篇利用python修改json文件的value方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python 實現(xiàn)毫秒級淘寶搶購腳本的示例代碼

    Python 實現(xiàn)毫秒級淘寶搶購腳本的示例代碼

    本篇文章主要介紹了Python 通過selenium實現(xiàn)毫秒級自動搶購的示例代碼,通過掃碼登錄即可自動完成一系列操作,搶購時間精確至毫秒,可搶加購物車等待時間結(jié)算的,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 使用anaconda的pip安裝第三方python包的操作步驟

    使用anaconda的pip安裝第三方python包的操作步驟

    今天小編就為大家分享一篇使用anaconda的pip安裝第三方python包的操作步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Django 實現(xiàn)jwt認證的示例

    Django 實現(xiàn)jwt認證的示例

    這篇文章主要介紹了Django 實現(xiàn)jwt 認證的示例,幫助大家更好的理解和學(xué)習(xí)使用django,感興趣的朋友可以了解下
    2021-04-04
  • Pytorch數(shù)據(jù)類型與轉(zhuǎn)換(torch.tensor,torch.FloatTensor)

    Pytorch數(shù)據(jù)類型與轉(zhuǎn)換(torch.tensor,torch.FloatTensor)

    這篇文章主要介紹了Pytorch數(shù)據(jù)類型轉(zhuǎn)換(torch.tensor,torch.FloatTensor),之前遇到轉(zhuǎn)為tensor轉(zhuǎn)化為浮點型的問題,今天整理下,我只講幾個我常用的,對Pytorch數(shù)據(jù)類型轉(zhuǎn)換相關(guān)知識感興趣的朋友一起看看吧
    2023-02-02
  • Python 性能優(yōu)化技巧總結(jié)

    Python 性能優(yōu)化技巧總結(jié)

    代碼優(yōu)化能夠讓程序運行更快,它是在不改變程序運行結(jié)果的情況下使得程序的運行效率更高,根據(jù) 80/20 原則,實現(xiàn)程序的重構(gòu)、優(yōu)化、擴展以及文檔相關(guān)的事情通常需要消耗 80% 的工作量。優(yōu)化通常包含兩方面的內(nèi)容:減小代碼的體積,提高代碼的運行效率。
    2016-11-11
  • 在Python的Flask框架中使用日期和時間的教程

    在Python的Flask框架中使用日期和時間的教程

    這篇文章主要介紹了在Python的Flask框架中使用日期和時間的教程,包括對各個時區(qū)之間轉(zhuǎn)換的一些處理,需要的朋友可以參考下
    2015-04-04

最新評論

西吉县| 吉林市| 同德县| 剑川县| 昔阳县| 巫溪县| 凌云县| 宜宾县| 克什克腾旗| 建始县| 贵阳市| 内江市| 开封市| 龙游县| 莱西市| 承德县| 广宗县| 东安县| 绥阳县| 江门市| 南京市| 湛江市| 富锦市| 望奎县| 自贡市| 新津县| 迁安市| 常州市| 通化市| 淄博市| 德安县| 阿勒泰市| 会同县| 宜川县| 花莲市| 衡东县| 攀枝花市| 林口县| 青冈县| 昂仁县| 杂多县|