一日一技:Selenium如何接管已經(jīng)運行的 Chrome 瀏覽器?
在昨天的文章一日一技:爬蟲模擬瀏覽器如何避免重復登錄?中,我講到了如何使用Puppeteer接管已經(jīng)運行的Chrome。今天我們來講講使用Selenium如何實現(xiàn)這個功能。
在正式開始之前,先糾正昨天的一個錯誤。昨天我講到,Windows電腦啟動Chrome的遠程調(diào)試模式用到的命令是:
- 文件路徑/chrome.exe --remote-debugging-port=9222
這個地方漏掉了一個參數(shù)。正確的命令應該是:
- 文件路徑/chrome.exe --remote-debugging-port=9222 --user-data-dir="某個存在的文件夾地址"
好了,回到正題。現(xiàn)在無論你使用macOS還是Windows,首先按昨天的文章所說,啟動Chrome開放9222端口。然后,在這個Chrome中,手動登錄示例網(wǎng)站。
接下來,編寫下面這段代碼:
- from selenium.webdriver import Chrome
- from selenium.webdriver.chrome.options import Options
- chrome_options = Options()
- chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
- # 注意我把chromedriver文件放到了當前文件夾里面,所以可以這樣調(diào)用
- # 如果你是windows電腦,你需要使用./chromedriver.exe
- driver = Chrome('./chromedriver', options=chrome_options)
- driver.get('http://exercise.kingname.info/exercise_login_success')
- input('輸入任意內(nèi)容繼續(xù)')
- driver.get('https://www.kingname.info')
- input('輸入任意內(nèi)容繼續(xù)')
- driver.get('http://exercise.kingname.info/exercise_login_success')
如下圖所示:
由于使用Selenium的時候,始終操作的都是當前標簽頁,為了證明確實有效,所以我在示例代碼里面,先把爬蟲暫停,需要你在終端按下任何鍵以后,再打開我的博客。接下來,等你確認博客已經(jīng)打開以后,再回到終端按下任意鍵,Chrome會再次打開登錄成功的頁面。
你還可以試一試把Python程序終止,再重新運行。你會發(fā)現(xiàn)代碼依然可以接管這個瀏覽器窗口。