当前位置: 首页 > 科技观察

每日一技能:Selenium如何接管已经运行的Chrome浏览器?

时间:2023-03-20 16:22:26 科技观察

昨天的文章《一天一技能:爬虫如何模拟浏览器避免重复登录?》,讲了如何使用Puppeteer接管已经运行的Chrome。今天我们就来说说如何使用Selenium来实现这个功能。更正昨天正式开始前的一个错误。昨天提到在Windows电脑上启动Chrome远程调试模式的命令是:filepath/chrome.exe--remote-debugging-port=9222这个地方少了一个参数。正确的命令应该是:filepath/chrome.exe--remote-debugging-port=9222--user-data-dir="现有文件夹的地址"好了,回到主题。现在不管你用的是macOS还是Windows,首先就像昨天文章说的那样,启动Chrome,打开9222端口。然后,在这个Chrome中,手动登录示例网站。接下来写如下代码:fromselenium.webdriverimportChromefromselenium.webdriver.chrome.optionsimportOptionschrome_options=Options()chrome_options.add_experimental_option("debuggerAddress","127.0.0.1:9222")#注意我把chromedriver文件放在当前文件夹下,所以可以这样调用#如果你是windows电脑,需要用./chromedriver.exedriver=Chrome('./chromedriver',options=chrome_options)driver.get('http://exercise.kingname.info/exercise_login_success')input('Enteranycontenttocontinue')driver.get('https://www.kingname.info')input('Enteranycontenttocontinue')driver.get('http://exercise.kingname.info/exercise_login_success')如下图所示:由于使用Selenium时,操作的始终是当前标签页,为了证明确实有效,所以我先在示例代码中暂停了爬虫,您需要在终端中按任意键,再次打开我的博客。接下来,确认博客已经打开后,回到终端按任意键,Chrome会再次打开登录成功的页面。您也可以尝试终止Python程序并重新运行它。你会发现代码仍然可以接管浏览器窗口。