文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-08-31 07:29

关注

文章目录


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

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

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

检查自己的Chrome浏览器版本,后面下载驱动要看这个,否则不匹配也用不了。
在这里插入图片描述

2. 下载浏览器驱动文件

然后到下面的网页里去找对应的版本(主要的版本号对应上即可)
https://registry.npmmirror.com/binary.html?path=chromedriver/
在这里插入图片描述
根据操作系统选择需要下载的文件,Windows系统下载这个文件即可。
在这里插入图片描述

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

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

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 webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.chrome.options import Optionsimport time,osimport datetimedef 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完成。

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

但如果需要读取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://blog.csdn.net/popboy29/article/details/130626648

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯