【Python小技巧】Python操控Chrome浏览器实现网页打开、切换、关闭(送独家Chrome操作打包类源码、Chrome浏览器Cookie在哪里?)

这篇具有很好参考价值的文章主要介绍了【Python小技巧】Python操控Chrome浏览器实现网页打开、切换、关闭(送独家Chrome操作打包类源码、Chrome浏览器Cookie在哪里?)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本文将为您展示如何通过Python控制浏览器实现网页的打开、页面的切换和关闭的基本操作,另外对于高阶用户,知道Chrome浏览器Cookie在哪里?可以方便方位Cookie从而实现带登录的更多操作。当然,利用本文方法,你也可以提前登录好,这样就可以直接操作,而免去繁琐的登录环节。按步骤操作,小白也可以实现功能哦!

一、什么时候需要用Python控制浏览器?

有些时候,我们需要操作浏览器完成访问,比如通过网页操作同花顺模拟炒股,又比如做一些网页端的测试等。总之,每次都要点击很多次鼠标,太麻烦了。那么有没有一种可以方法可以通过程序控制操作呢。当然,有些人已经想到了模拟键盘鼠标的键盘精灵类软件。这些当然可以。但我们今天要讲一种更为直接的办法。

二、下载Chrome浏览器驱动文件

1. 安装Chrome浏览器并查看版本

检查自己的Chrome浏览器版本,后面下载驱动要看这个,否则不匹配也用不了。
python控制谷歌浏览器,Python经验池,chrome,python,前端

2. 下载浏览器驱动文件

然后到下面的网页里去找对应的版本(主要的版本号对应上即可)
https://registry.npmmirror.com/binary.html?path=chromedriver/
python控制谷歌浏览器,Python经验池,chrome,python,前端
根据操作系统选择需要下载的文件,Windows系统下载这个文件即可。
python控制谷歌浏览器,Python经验池,chrome,python,前端

3. 解压到python编译器目录(python.exe所在目录)

将解压出来的chromedriver.exe放到python编译器目录。如果使用Python虚拟环境,一样放到虚拟环境目录下。

三、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中输入,后面的端口号和前面的要保持一致,多个浏览器,就自己匹配好就行:

option.add_experimental_option("debuggerAddress", "127.0.0.1:9200")

通过以上2个步骤的配合,即可实现使用selenium对当前打开的chrome界面进行接管。

2. Python控制Chrome浏览器完整源代码

这里使用selenium 来控制浏览器,为方便操作,将其打包成类。并且使用模糊搜索,可通过窗口titile操作页面。个人独创,这里加鸡腿啊!

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):
    # 对x通过键名模糊查找后返回键名,键值
    for key,value in _dict.items(): 
        if x in key:
            return key,value
    return x,None

# 定义一个字典,设置网页标题和url,后面操作会使用到    
url_dict = {
            '通达信问小达':'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)  # 设置隐式时间等待
        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() # 关闭第一个窗口
            self.browser.switch_to.window(handle)  # 切换到第二个窗口
            # print(self.browser.title)
            title = self.browser.title.replace(u'\xa0', '').split('-')[0] # 剔除标题中的'-'字符
            tab_dict[title] = handle
        return tab_dict

    def open_tab(self,url_dict=url_dict):
        for k,v in url_dict.items():
            print('进入'+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=''):
        # 包含同时关闭的功能
        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):
        # 关闭所有窗口,关闭单个由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='通达信',act='') # 切换到title为name的窗口,act='close'则切换完同时关闭。
    cb._close() # 关闭所有窗口,关闭单个由switch完成。

四、Chrome浏览器Cookie在哪里?(避坑指南)

以上操作,可以提前登录好,并保存密码,即可实现自动登录。

但如果需要读取Cookie完成更多高级操作,请注意以下路径。网上之前的文章很多,但好些拿来不能用,关键是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

另外,注意Chrome会自动更新,请及时更新对应驱动文件。


总结

关于Python控制浏览器完成各种操作的教程,网上可以说很多,笔者也是各种学习,但经过测试使用还是对小白不友好。各种填坑在所难免。为了方便操作,避免踩坑,著此文以方便各位。

各种测试,一个周末又报废了,写作不易,有帮助的话,留个言,也提高以下活跃度。文章来源地址https://www.toymoban.com/news/detail-594512.html

到了这里,关于【Python小技巧】Python操控Chrome浏览器实现网页打开、切换、关闭(送独家Chrome操作打包类源码、Chrome浏览器Cookie在哪里?)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Macbook无法上网或只能登陆微信无法使用网页的解决方法(Chrome浏览器)

    本人长期使用VPN,偶然一次停电后导致网络配置出现问题。 最开始是校园网和热点都无法登陆,后续是校园网无法登陆。提示客户端和服务器不支持常用的ssl协议,或者提示1.1.1.1使用了不受支持的协议或是提示DNS不安全之类的。 1.使用114.114.114.114 或8.8.8.8DNS 2.删除wifi再添加

    2024年02月16日
    浏览(152)
  • Mac无法上网或只能登陆微信无法使用网页的解决方法(Chrome浏览器)

    本人长期使用VPN,偶然一次停电后导致网络配置出现问题。 最开始是校园网和热点都无法登陆,后续是校园网无法登陆。提示客户端和服务器不支持常用的ssl协议,或者提示1.1.1.1使用了不受支持的协议或是提示DNS不安全之类的。 1.使用114.114.114.114 或8.8.8.8DNS 2.删除wifi再添加

    2024年02月14日
    浏览(111)
  • 【AI选股】如何通过python调用通达信-小达实现AI选股(量化又多了一个选股工具,原文Chrome浏览器请改为Edge浏览器)

    ChatGPT火遍网络,那么有没有可以不用写公式就可以实现AI选股的方法?答案是有,今天我们就来试试通达信的小达,让小达按我们的要求去进行选股。 使用Chrome浏览器报错的请改为Edge浏览器,或者Firefox浏览器,参考如下文章: 【Python小技巧】browser_cookie3访问Chrome浏览器Co

    2024年02月11日
    浏览(82)
  • Python Headless Chrome(无头谷歌浏览器)

    在我们使用Selenium驱动ChromeDriver时,可以弹出谷歌浏览器,模拟人为操作谷歌浏览器,这就是自动化测试。虽然很厉害,但是也有一个很现实的问题,因为是要真实加载完整网页,导致效率低。在自动化测试时,我们其实只需要知道是测试完成还是未完成,至于能否看到完整

    2024年02月05日
    浏览(44)
  • Python + Playwright 无头浏览器Chrome找不到元素

    用Python + Playwright调试时,发现不用无头浏览器(即 headless=False )代码能够运行成功,但是一用无头浏览器时(即 headless=True )就会报错,提示找不到元素。换成Firefox浏览器又不会有这个问题,有可能是因为网站有一个前段反爬虫手段。(同理,如果大家使用 playwright codege

    2024年02月16日
    浏览(40)
  • Python selenium自动化操作Chrome浏览器

    ​ ​ 活动地址:CSDN21天学习挑战赛 Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持目前比较主流的浏览器。它也实现了诸多自动化功能,比如软件自动化测试,检测软件与浏览器兼容性,自动录制、生成不同语言

    2024年02月02日
    浏览(32)
  • selenium 使用已打开的chrome浏览器(python版)

    使用selenium 的 webdriver 调试的时候,每次都是打开一个新的 chrome浏览器实例,特别不方便,那怎么使用上次打开的chrome浏览器实例呢,以下是完整代码,亲测可用 python版本:3.10 系统:win11 步骤1,先写一个打开 chrome浏览器 的文件1,里面指定这个chrome浏览器实例的端口号

    2024年02月14日
    浏览(31)
  • chrome和edge浏览器,实现视频不静音自动播放

    chrome a.先打开网站的设置 b.找到声音设置,将 自动(默认)修改为 允许,然后刷新原网页即可。 microsoft edeg a.和chorme一样的操作,先打开设置。 b.选择cookie和网站权限,找到媒体自动播放设置后进入。 c.设置为允许即可。当然如果你只想要某些网站允许自动播放,可以在下

    2024年02月12日
    浏览(74)
  • Chrome浏览器如何实现多开操作?(Mac系统为例)

    一切不以解决问题为目的的小技巧都是耍流氓。 在测试过程中,有时间需要验证多个账户登陆的情况,大部分情况下都需要一台电脑上打开多个浏览器,但是如果想都使用Chrome浏览器怎么办呢? 大部分的伙伴都是打开一个隐私窗口,但是隐私窗口很多功能是无法使用的,比

    2024年02月04日
    浏览(27)
  • python通过selenium爬取网页信息,python获取浏览器请求内容,控制已经打开的浏览器

    背景:通过python中直接get或者urlopen打开一些有延迟加载数据的网页,会抓取不到部分信息。 1. 命令行打开chrome,并开启调试端口 (前提,找到chrome安装目录,找到chrome.exe所在路径,添加到环境变量中,例如我的是C:Program FilesGoogleChromeApplication) remote-debugging-port指定远程调试

    2024年02月16日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包