当前位置:
首页 > temp > python入门教程 >
-
对于Python selenium操作的总结(三)
## 一、思路 自动化登录网站的方式有三种:
与人机识别硬刚,这个比较有挑战性,如果有兴趣的话可以试一下
通过读取有本地记录的浏览器,直接进行cookies登录
通过读取本地存储的cookies,使用任意浏览器进行登录
其中第二项和第三项都差不多,都是由cookies登录,但是第二项是必须启动本地的浏览器才能正常登录,而第三项则通过存储的cookies直接在后续流程中任意启动的浏览器都可以直接登录了。 则我的思路就是:从本地浏览器中读取并存储cookies - - > 形成一个存储cookies的json文件 - - > 通过读取json文件给浏览器添加cookies以实现登录操作。
二、代码
理论成立,代码如下:
from selenium import webdriver
import json
from selenium.webdriver.chrome.options import Options
#用json文件载入cookies值
def get_cookies_local(filename, driver):
#启动chrome安装位置中的chrome.exe文件,默认的chrome文件的安装位置为:C:\Program Files\Google\Chrome\Application
#若第一次运行则需要在cmd运行打开chrome的指令:D:\Application\Google\chrome.exe --remote-debugging-port=12306
print('\n\n\n\n PLEASE PUT "D:\Application\Google\chrome.exe --remote-debugging-port=12306"\
IN YOUR CMD \n\n\n')
print("WAITTING FOR YOUR OPERATOR_____")
options = Options()
options.add_experimental_option("debuggerAddress", "localhost:12306")
setter = webdriver.Chrome(options=options)
#读取本地浏览器上网址的cookies
setter.get("https://www.bilibili.com/")
cookies= setter.get_cookies()
with open(filename, 'w') as f:
json.dump(cookies, f)
setter.close()
#获取后直接导入cookies值
use_option(filename, driver)
使用json文本的值
def use_option(filename, driver):
#通过判断是否有对应的cookies文件来或cookies文件是否有值决定返回值
try:
with open(filename, 'r') as f:
arr = json.load(f)
#如果cookies文件不为空则读取并向浏览器添加cookies
if arr != None:
for i in range(len(arr)):
driver.add_cookie(arr[i])
return True
else:
return False
except Exception as e:
return False
if __name__ == '__main__':
driver = webdriver.Chrome()
driver.get("https://www.bilibili.com/")
#通过判断use_option函数的返回值来决定是否重新写入json文件
if not use_option('cookies.json', driver):
get_cookies_local('cookies.json', driver)
#登录
driver.get("https://www.bilibili.com/")
三、运行
可以看到没有对应的存储cookies.json文件的,然后直接运行代码:
运行操作:点击运行后会直接弹出未记录本地的浏览器打开b站,然后通过运行提示,手动打开记录本地的浏览器(用于对cookies的提取与记录),程序关闭本地浏览器后,会发现多出一个cookies.json文件,自动将未记录本地的浏览器登录到相应的账号。第二次运行,由于已经存在cookies.json文件,通过这个文件可直接登录,不必再次打开本地浏览器。
四、总结
通过cookies自动化登录浏览器多少有点投机取巧,但是也是新手接触浏览器自动化的一种解决办法,希望可以在日后通过各种库的学习以及对opencv、机器学习的掌握,来解决人机识别难题,真正做到用户的操作简洁化。
出处:
https://www.cnblogs.com/lemon-cool/p/15857454.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数