Python操控Chrome瀏覽器進(jìn)行網(wǎng)頁(yè)操作
前言
本文將為您展示如何通過(guò)Python控制瀏覽器實(shí)現(xiàn)網(wǎng)頁(yè)的打開(kāi)、頁(yè)面的切換和關(guān)閉的基本操作,另外對(duì)于高階用戶,知道Chrome瀏覽器Cookie在哪里?可以方便方位Cookie從而實(shí)現(xiàn)帶登錄的更多操作。當(dāng)然,利用本文方法,你也可以提前登錄好,這樣就可以直接操作,而免去繁瑣的登錄環(huán)節(jié)。按步驟操作,小白也可以實(shí)現(xiàn)功能哦!
一、什么時(shí)候需要用Python控制瀏覽器
有些時(shí)候,我們需要操作瀏覽器完成訪問(wèn),比如通過(guò)網(wǎng)頁(yè)操作同花順模擬炒股,又比如做一些網(wǎng)頁(yè)端的測(cè)試等??傊?,每次都要點(diǎn)擊很多次鼠標(biāo),太麻煩了。那么有沒(méi)有一種可以方法可以通過(guò)程序控制操作呢。當(dāng)然,有些人已經(jīng)想到了模擬鍵盤(pán)鼠標(biāo)的鍵盤(pán)精靈類軟件。這些當(dāng)然可以。但我們今天要講一種更為直接的辦法。
二、下載Chrome瀏覽器驅(qū)動(dòng)文件
1. 安裝Chrome瀏覽器并查看版本
檢查自己的Chrome瀏覽器版本,后面下載驅(qū)動(dòng)要看這個(gè),否則不匹配也用不了。

2. 下載瀏覽器驅(qū)動(dòng)文件
然后到下面的網(wǎng)頁(yè)里去找對(duì)應(yīng)的版本(主要的版本號(hào)對(duì)應(yīng)上即可)
https://registry.npmmirror.com/binary.html?path=chromedriver/

根據(jù)操作系統(tǒng)選擇需要下載的文件,Windows系統(tǒng)下載這個(gè)文件即可。

3. 解壓到python編譯器目錄(python.exe所在目錄)
將解壓出來(lái)的chromedriver.exe放到python編譯器目錄。如果使用Python虛擬環(huán)境,一樣放到虛擬環(huán)境目錄下。
三、Python控制Chrome瀏覽器(附源代碼)
1. 操作分兩步
(1)在CMD命令提示符中輸入(具體路徑看你的瀏覽器安裝位置):
cd C:\Program Files\Google\Chrome\Application\
chrome.exe --remote-debugging-port=9200 --user-data-dir="D:\tempfiles"
(2)在python中輸入,后面的端口號(hào)和前面的要保持一致,多個(gè)瀏覽器,就自己匹配好就行:
option.add_experimental_option("debuggerAddress", "127.0.0.1:9200")通過(guò)以上2個(gè)步驟的配合,即可實(shí)現(xiàn)使用selenium對(duì)當(dāng)前打開(kāi)的chrome界面進(jìn)行接管。
2. Python控制Chrome瀏覽器完整源代碼
這里使用selenium 來(lái)控制瀏覽器,為方便操作,將其打包成類。并且使用模糊搜索,可通過(guò)窗口titile操作頁(yè)面。個(gè)人獨(dú)創(chuàng),這里加雞腿??!
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import time,os
import datetime
def fuzzy_find(x,_dict):
# 對(duì)x通過(guò)鍵名模糊查找后返回鍵名,鍵值
for key,value in _dict.items():
if x in key:
return key,value
return x,None
# 定義一個(gè)字典,設(shè)置網(wǎng)頁(yè)標(biāo)題和url,后面操作會(huì)使用到
url_dict = {
'通達(dá)信問(wèn)小達(dá)':'https://wenda.tdx.com.cn/site/wenda/index.html',
'雪球':'https://xueqiu.com/',
'百度':'http://www.baidu.com',
}
class Chrome_browser():
def __init__(self):
print('start Chrome_browser')
options = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9200")
self.browser = webdriver.Chrome(options=options)
self.browser.implicitly_wait(8) # 設(shè)置隱式時(shí)間等待
self._max()
def _max(self):
self.browser.maximize_window() # 最大化瀏覽器
def _get_tab_dict(self):
tab_dict = {}
handles = self.browser.window_handles
for handle in handles: # 切換窗口
# print ('switch to second window', handle)
# self.browser.close() # 關(guān)閉第一個(gè)窗口
self.browser.switch_to.window(handle) # 切換到第二個(gè)窗口
# print(self.browser.title)
title = self.browser.title.replace(u'\xa0', '').split('-')[0] # 剔除標(biāo)題中的'-'字符
tab_dict[title] = handle
return tab_dict
def open_tab(self,url_dict=url_dict):
for k,v in url_dict.items():
print('進(jìn)入'+k,datetime.datetime.now())
self.browser.switch_to.new_window('tab')
self.browser.get(v)
self.browser.refresh()
time.sleep(2)
def _switch(self, name='', act=''):
# 包含同時(shí)關(guān)閉的功能
tab_dict = self._get_tab_dict()
print('tab_dict',tab_dict)
if name != '':
key,value = fuzzy_find(name,tab_dict)
# print('key,value',key,value)
if value != None:
self.browser.switch_to.window(value)
if act == 'close':
self.browser.close()
return False
return True
else:
return False
def _close(self):
# 關(guān)閉所有窗口,關(guān)閉單個(gè)由switch完成。
tab_dict = self._get_tab_dict()
for k,v in tab_dict.items(): # 切換窗口
self.browser.switch_to.window(v)
self.browser.close()
if __name__=='__main__':
cb = Chrome_browser()
cb.open_tab()
cb._switch(name='通達(dá)信',act='') # 切換到title為name的窗口,act='close'則切換完同時(shí)關(guān)閉。
cb._close() # 關(guān)閉所有窗口,關(guān)閉單個(gè)由switch完成。四、Chrome瀏覽器Cookie在哪里(避坑指南)
以上操作,可以提前登錄好,并保存密碼,即可實(shí)現(xiàn)自動(dòng)登錄。
但如果需要讀取Cookie完成更多高級(jí)操作,請(qǐng)注意以下路徑。網(wǎng)上之前的文章很多,但好些拿來(lái)不能用,關(guān)鍵是Cookie文件路徑變了:
96版本以前:./AppData\Local\Google\Chrome\User Data\default\Cookies
96版本之后:./AppData/Local/Google/Chrome/User Data/Default/Network/Cookies
完整路徑如(Administrator替換為自己的用戶名):
C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies
到此這篇關(guān)于Python操控Chrome瀏覽器進(jìn)行網(wǎng)頁(yè)操作的文章就介紹到這了,更多相關(guān)Python Chrome網(wǎng)頁(yè)操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python網(wǎng)絡(luò)編程之文件下載實(shí)例分析
這篇文章主要介紹了python網(wǎng)絡(luò)編程之文件下載實(shí)現(xiàn)方法,實(shí)例分析了Python基于FTP及http實(shí)現(xiàn)文件下載的技巧,需要的朋友可以參考下2015-05-05
在PyCharm搭建OpenCV-python的環(huán)境的詳細(xì)過(guò)程
這篇文章主要介紹了在PyCharm搭建OpenCV-python的環(huán)境的詳細(xì)過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹搭建步驟,對(duì)PyCharm搭建OpenCV-python環(huán)境相關(guān)知識(shí)感興趣的朋友一起看看吧2022-05-05
Python數(shù)據(jù)可視化Pyecharts庫(kù)實(shí)現(xiàn)桑葚圖效果
這篇文章主要介紹了Python數(shù)據(jù)可視化如何使用Pyecharts庫(kù)來(lái)實(shí)現(xiàn)桑葚圖效果圖,文中給出實(shí)現(xiàn)的示例代碼,有需要的朋友可以借鑒參考想,希望能夠有所幫助2021-09-09
drf-router和authenticate認(rèn)證源碼分析
在 Rest Framework 中提供了兩個(gè) router , 可以幫助我們快速的實(shí)現(xiàn)路由的自動(dòng)生成,本文通過(guò)實(shí)例代碼給大家介紹drf-router和authenticate認(rèn)證源碼分析,感興趣的朋友跟隨小編一起看看吧2021-07-07
深度學(xué)習(xí)小工程練習(xí)之tensorflow垃圾分類詳解
這篇文章主要介紹了練習(xí)深度學(xué)習(xí)的一個(gè)小工程,代碼簡(jiǎn)單明確,用來(lái)作為學(xué)習(xí)深度學(xué)習(xí)的練習(xí)很適合,對(duì)于有需要的朋友可以參考下,希望大家可以體驗(yàn)到深度學(xué)習(xí)帶來(lái)的收獲2021-04-04

