Python操控Chrome浏览器进行网页操作

 更新时间:2023年06月06日 08:33:41   作者:IT里的交易员  
这篇文章将为您展示如何通过Python控制浏览器实现网页的打开、页面的切换和关闭的基本操作,文中的示例代码讲解详细,感兴趣的可以了解一下

前言

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

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

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

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

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

检查自己的Chrome浏览器版本,后面下载驱动要看这个,否则不匹配也用不了。

2. 下载浏览器驱动文件

然后到下面的网页里去找对应的版本(主要的版本号对应上即可)

https://registry.npmmirror.com/binary.html?path=chromedriver/

根据操作系统选择需要下载的文件,Windows系统下载这个文件即可。

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

到此这篇关于Python操控Chrome浏览器进行网页操作的文章就介绍到这了,更多相关Python Chrome网页操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pytest测试报告工具Allure用法介绍

    Pytest测试报告工具Allure用法介绍

    这篇文章介绍了Pytest测试报告工具Allure的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Python快速从视频中提取视频帧的方法详解

    Python快速从视频中提取视频帧的方法详解

    本文为大家介绍一种从视频中抽取视频帧的方法,由于单线程抽取视频帧速度较慢,因此这里我们增加了多线程的方法,感兴趣的小伙伴可以动手尝试一下
    2022-07-07
  • Selenium webdriver添加cookie实现过程详解

    Selenium webdriver添加cookie实现过程详解

    这篇文章主要介绍了Selenium webdriver添加cookie实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • python数字图像处理之高级滤波代码详解

    python数字图像处理之高级滤波代码详解

    这篇文章主要介绍了python数字图像处理之高级滤波代码详解,介绍了许多对图像处理的滤波方法,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Python中异常捕获与处理的方法总结

    Python中异常捕获与处理的方法总结

    Python异常是在程序执行时发生的错误,可能会导致程序终止运行。这篇文章主要为大家总结了Python中异常捕获与处理的方法,需要的可以参考一下
    2023-04-04
  • python自动化测试之setUp与tearDown实例

    python自动化测试之setUp与tearDown实例

    这篇文章主要介绍了python自动化测试之setUp与tearDown实例,其中setUp()方法中进行测试前的初始化工作,并在tearDown()方法中执行测试后的清除工作,setUp()和tearDown()都是TestCase类中定义的方法,需要的朋友可以参考下
    2014-09-09
  • Python 非极大值抑制(NMS)的四种实现详解

    Python 非极大值抑制(NMS)的四种实现详解

    本文主要介绍了非极大值抑制(Non-Maximum Suppression,NMS)的四种实现方式,不同方法对NMS速度的影响各不相同,感兴趣的小伙伴可以了解一下
    2021-11-11
  • python txt中的文件,逐行读取并且每行赋值给变量问题

    python txt中的文件,逐行读取并且每行赋值给变量问题

    这篇文章主要介绍了python txt中的文件,逐行读取并且每行赋值给变量问题,具有很好的参考价值,希望对大家有所帮助。
    2023-02-02
  • NumPy对数组按索引查询实战方法总结

    NumPy对数组按索引查询实战方法总结

    数组的高级操作主要是组合数组,拆分数组,tile数组和重组元素,下面这篇文章主要给大家介绍了关于NumPy对数组按索引查询的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • OpenCV+Python3.5 简易手势识别的实现

    OpenCV+Python3.5 简易手势识别的实现

    这篇文章主要介绍了OpenCV+Python3.5 简易手势识别的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论