1、查看chrome://version/瀏覽器版本,找到
個人資料路徑 |
C:\Users\qinzu\AppData\Local\Google\Chrome\User Data\Default |
返回上一層找到User Data,復制兩份或者多份,前提先把瀏覽器賬號退出,清除緩存在復制,避免瀏覽器出錯。
2、如果多開需要復制幾份源碼,多開多少個就復制多少份,一份源代碼,一份定時程序,一份關鍵詞,一份域名。
3、每份源碼調用的關鍵詞,域名,User Data,chromedriver文件名稱不一樣,如果一樣會報錯。
python利用selenium程序調用本地瀏覽器多開
chrome的附加功能多一點,建議用chrome瀏覽器,因為這個瀏覽器能多開,問題也就解決了,也沒有必要再去找其他瀏覽器了。[這個方法可以比較方便爬取淘寶天貓等反爬手段比較厲害的網站]
想必各位朋友碰到過網站會檢測自動化程序,然后導致頁面不能載入,舉個栗子:
現在我在實現51job的HR端部分功能的自動化,
但是就是登錄不進去,而且還不能利用本地cookie登錄,
結果在console里面一查: window.navigator.webdriver 返回的是true,
這就是網站的一種檢測方式,識別到是自動化軟件
我百度了一下,有一種方案:
設置為開發者模式,具體操作為
self.options = webdriver.ChromeOptions()
# self.options.add_argument(generate_user_agent(device_type="desktop"))
# self.options.add_argument('lang=zh-CN,zh,zh-TW,en-US,en')
self.options.add_experimental_option('excludeSwitches', ['enable-automation'])
self.driver = webdriver.Chrome(options=self.options)
上面這個方案實施了后,頁面不能檢測到webdriver,但是依舊登錄不上,不知道哪里的問題,調用本地存的cookie也是不行,難道還是識別到了自動化軟件。
然后又找到了另外一種方案,調用本地的瀏覽器【推薦】。
這個方案是目前最佳的方案,因為可以不反復啟動瀏覽器,只要不退出,程序就可以直接利用打開的瀏覽器,但是這個方案有幾個需要注意的地方。
-
需要定位到chrome.exe(就是安裝谷歌瀏覽器的那個開啟瀏覽器的那個文件,為了方便,可以添加進系統path(這個就不用介紹了,和你配置python的path一樣的),然后利用以下方式啟動瀏覽器)
chrome.exe --remote-debugging-port=9527 --user-data-dir="C:\selenium_xxx\AutomationProfile"
上面的參數里面 9527 就是你要開辟的控制端口這里可以隨便改,
但是不要用常用的那些端口比如(80,443,8080,27017....)
然后后面的那個--user-data-dir="這里面的鏈接經過測試,
可以這么寫C:\xxxxx\AutomationProfile" xxxx是你隨便寫的:
個人推薦:建議設置為selenium_text selenium_taobao selenium_kanzhun這樣的格式
不同的就是可以開啟不同的賬號,如果都用這個位置,可能會發現哪怕用不同的端口,但是程序只會第一個調用的成功。
所以:不同的端口做不同的事情,用不同的文件夾位置放賬戶配置信息。哪怕這次窗口關閉了,
你下次調用這個窗口打開一樣的頁面,只要不到cookie失效時間,你登錄的信息都還是存在的。
python里面的鏈接方式:我是寫在類里面的__init__里面的,所以有個self
self.options = webdriver.ChromeOptions()
self.options.add_argument("--no-sandbox") # 這里的信息是附加信息,可以不設置,但是推薦設置
self.options.add_argument('--disable-gpu') # 這里的信息是附加信息,可以不設置,但是推薦設置
self.options.add_experimental_option("debuggerAddress", "127.0.0.1:9527")
self.driver = webdriver.Chrome(options=self.options)
公司要求三套賬號登錄,所以我就改了端口,還有后面的那個dir位置,就可以成功開啟三個本地調用的瀏覽器了。
當然還有另外的方式【不推薦】
下載不同版本的chrome,還要下載對應版本的chromedirver略顯麻煩。
順道一提:建議各位學習各個程序功能的小伙伴,為了程序的可拓展性,程序里面的可能變的參數,建議單獨設置一個配置文件,然后把那些信息放配置文件里面,這樣復制文件也很方便,只要改配置文件信息就好了。比如我上面的那個端口信息,我是設置到配置文件里面,因為不同的程序會開不同的窗口,python3.6+ 可以利用f-string 很方便的,我喜歡寫個python_config.py
的文件放配置信息,我一般放在該項目下單獨創建的一個helper
的目錄下面 所以可以這樣子寫 : 在文件上面導入模塊的時候寫
from helper import python_config
這樣子后面就可以這樣子用這個自定義的配置文件了。
options.add_experimental_option("debuggerAddress", f"127.0.0.1:{pytho
n_config.CHROME_PORT}")