selenium 接管可保存用户数据浏览器(edge)

一、前言

0、作用:保留登录数据

1、浏览器:edge 浏览器(chorm类似)

2、环境:安装 selenium 与 selenium edge 引擎

下载 selenium:
pip install selenium
根据 edge 版本找到对应的引擎:
edge:   https://msedgewebdriverstorage.z22.web.core.windows.net/
chorm:  http://chromedriver.storage.googleapis.com/index.html

二、步骤

1、接管本地浏览器

相关包
from selenium import webdriver
import os,subprocess,psutil
启动浏览器
python程序启动:
    # 切换到浏览器安装地址
    os.chdir("C:\Program Files (x86)\Microsoft\Edge\Application")
    # 启动9222端口以D:\chrome\seleniumEdge路径作为自定义用户数据目录
    sub_popen = subprocess.Popen('.\msedge.exe --remote-debugging-port=9222 --user-data-dir="D:\chrome\seleniumEdge"')
cmd启动:
    msedge.exe --remote-debugging-port=端口号 --user-data-dir="路径"
初始化配置 selenium
edge_options = webdriver.EdgeOptions()
edge_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
# 浏览器引擎路径 + 自定义浏览器配置
driver = webdriver.Edge(executable_path="D:/chrome/edge/msedgedriver.exe",options=edge_options)
进行相关自动化操作
driver.get("....")
driver.quit()
关闭浏览器
def kill_selenium(port):
    '''根据port号查询pid以关闭程序
    '''
    # 进程列表
    port_popen = os.popen(f'netstat -ano | findstr "{port}"')
    pid_list = [int(t.split(' ')[-1]) for t in port_popen.read().split('\n') if t]
    for pid in pid_list:
        try:
            # 删除父进程和子进程
            parent_process = psutil.Process(pid)
            for child_process in parent_process.children(recursive=True):
                child_process.kill()
            parent_process.kill()
        except Exception as e:
            print(e)
    port_popen.close()

四、案例:更新某企查验证码后的cookie(已登录状态)

def get_cookies(self):
    '''更新cookie
    '''
    # 切换路径启动浏览器
    os.chdir("C:\Program Files (x86)\Microsoft\Edge\Application")
    sub_popen = subprocess.Popen('.\msedge.exe --remote-debugging-port=9222 --user-data-dir="D:\chrome\seleniumEdge"')
    # 初始化selenium
    edge_options = webdriver.EdgeOptions()
    edge_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
    driver = webdriver.Edge(executable_path="D:/chrome/edge/msedgedriver.exe",options=edge_options)
    driver.get("...")
    sub_popen.kill()
    # kill_selenium(9222)
    # cookies = {c['name']:c['value'] for c in driver.get_cookies()}
    return ';'.join([f"{c['name']}={c['value']}" for c in driver.get_cookies()])
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值