Python3 使用selenium库登陆知乎并保存cookie为本地文件
Python3 使用selenium库登陆知乎并保存cookie为本地文件
学习使用selenium库模拟登陆知乎,并将cookie保存为本地文件,然后供以后(requests模块)使用,用selenium模拟登陆时,比较顺利,没有碰到需要验证码的情况,代码放在一个名为cookiesload.py模块中:
# -*- coding: utf-8 -*- from selenium.webdriver import Chrome
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
from settings import *
import time
import os
import json def zhihu_login():
# 知乎登陆url
login_url = 'https://www.zhihu.com/signup?next=%2F'
brower = Chrome()
# 设置浏览器窗口最大化
brower.maximize_window()
# 响应等待时间
wait = WebDriverWait(brower, 5)
brower.get(login_url)
try:
# 模拟点击最下方那个登陆链接书,跳转到账号密码登陆界面
login_switch = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="root"]/div/main/div/div/div/div[2]/div[2]/span')))
login_switch.click()
# 模拟输入用户名
username_input = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/div[1]/div[2]/div[1]/input')))
username_input.send_keys(USERNAME)
# 模拟输入密码
password_input = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/div[2]/div/div[1]/input')))
password_input.send_keys(PASSWORD)
# 模拟点击登陆按钮
login_button = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/button')))
login_button.click()
time.sleep(5)
# 获取cookies
cookies = brower.get_cookies()
# 保存cookies为本地文件
savecookies(cookies)
except TimeoutException:
# 如果捕获到超时异常则递归调用自己
zhihu_login() def savecookies(cookies):
path = os.getcwd() + '/cookies/'
if not os.path.exists(path):
os.makedirs(path)
with open(path + 'cookies.txt', 'w') as f:
cookie = json.dumps(cookies)
f.write(cookie) if __name__ == '__main__':
zhihu_login()
由于个人习惯,用了一个settings.py配置模块:
# 用户名
USERNAME = '173866016XX' # 密码
PASSWORD = 'XXX'
执行完毕后,会在当前工作目录生成一个名为cookies的文件夹,cookies.txt文件在该文件夹中。在cookie没有过期的情况下,以后要访问知乎就可以不用再登陆了,直接加载该cookie文件即可。
上面使用的Chrome浏览器的有界面模式,如果不想让浏览器直接在后台运行,不弹出界面,可以这样:
from selenium.webdriver.chrome.options import Options options = Options()
options.add_argument('--headless')
brower = Chrome(options=options)
更详细的写法可以参考:https://www.cnblogs.com/z-x-y/p/9026226.html
Python3 使用selenium库登陆知乎并保存cookie为本地文件的更多相关文章
- 【接口自动化】selenium库也有大用场(获取cookie)
相信有些童鞋在做接口.或者说接口自动化测试的过程中会遇到这样的场景:测试的接口,必须是需要登录后才能发起请求成功的. 那么怎么解决呢? 本着团队协作的精神,我们就去让开发同学开个后门,给你个" ...
- python3 selenium模拟登陆斗鱼提取数据保存数据库
# coding=utf-8from selenium import webdriverimport jsonimport timeimport pymongo class Douyu: def __ ...
- python3 引入selenium库报错ModuleNotFoundError: No module named 'selenium'
解决方法: pip install -U selenium
- python3、selenium、autoit3,通过flash控件上传文件
autoit.au3 #include <Constants.au3> WinWait(); //暂停执行脚本,直到上传对话框出现 WinActive("打开") Wi ...
- Python3.X Selenium 自动化测试中如何截图并保存成功
在selenium for python中主要有三个截图方法,我们挑选其中最常用的一种. 挑最常用的:get_screenshot_as_file() 相关代码如下:(下面的代码可直接复制) # co ...
- selenium+python自动化测试系列(二):AutoIt工具实现本地文件上传
AutoIt使用简单说明 AutoIt的安装这里就不在啰嗦,可以参考AutoIt安装或者自行搜索解决. 第一步:定位上传文件路径的文本框 这里举例说明,如何定位?如图 这里我们看到上传文件的类型是bu ...
- Python3 Scrapy + Selenium + 阿布云爬取拉钩网学习笔记
1 需求分析 想要一个能爬取拉钩网职位详情页的爬虫,来获取详情页内的公司名称.职位名称.薪资待遇.学历要求.岗位需求等信息.该爬虫能够通过配置搜索职位关键字和搜索城市来爬取不同城市的不同职位详情信息, ...
- Python爬虫之selenium库使用详解
Python爬虫之selenium库使用详解 本章内容如下: 什么是Selenium selenium基本使用 声明浏览器对象 访问页面 查找元素 多个元素查找 元素交互操作 交互动作 执行JavaS ...
- 使用OKHttp模拟登陆知乎,兼谈OKHttp中Cookie的使用!
本文主要是想和大家探讨技术,让大家学会Cookie的使用,切勿做违法之事! 很多Android初学者在刚开始学习的时候,或多或少都想自己搞个应用出来,把自己学的十八般武艺全都用在这个APP上,其实这个 ...
随机推荐
- Python 中,字符串"连接"效率最高的方式是?一定出乎你的意料
网上很多文章人云亦云,字符串连接应该使用「join」方法而不要用「+」操作.说前者效率更高,它以更少的代价创建新字符串,如果用「+」连接多个字符串,每连接一次,就要为字符串分配一次内存,效率显得有点低 ...
- [WPF]控件应用多个样式(转)
最近在做WPF项目,公司没有专门的UI工程师,什么都要自己做.接触WPF已经有好几年了,自定义样式什么的也可以做一些.WPF在使用样式的时候一般都是 Style="{StaticResour ...
- Python脚本MAC上双击执行,如何设置?
1.在文件首行添加如下代码: 如果你想使用默认python版本执行当前的脚本,即python2,则需要添加 #!/usr/bin/env python # -*- coding: utf-8 -*- ...
- Python函数- setattr()
作用: setattr 函数对应函数 getatt(),用于设置属性值,该属性必须存在. 语法: setattr(object, name, value) object -- 对象. name -- ...
- bzoj 4032 [HEOI2015]最短不公共子串——后缀自动机
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4032 不是 b 的子串的话就对 b 建后缀自动机,在 a 上枚举从每个位置开始的子串或者找子 ...
- bzoj 3456 城市规划——分治FFT / 多项式求逆 / 多项式求ln
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3456 分治FFT: 设 dp[ i ] 表示 i 个点时连通的方案数. 考虑算补集:连通的方 ...
- android资源目录---assets与res/raw区别
android资源目录---assets与res/raw的不同 Android 2011-05-24 14:40:21 阅读20 评论0 字号:大中小 订阅 assets:用于存放需要打包到应用程 ...
- Zabbix通过进程名监控进程状态配置详解
Zabbix通过进程名监控进程状态配置详解 有时候我们只能通过进程名监控一个进程是否停掉了,因为有的进程并没有对外提供端口号,以下记录了下详细步骤,通过这个示例会学到很多zabbix核心配置相关的东西 ...
- 关于IO流的抽象类
被一个问题问愣了:java的IO里有哪些抽象类?这个一时半会儿还真记不得,只知道IO有好几类,具体有哪些抽象类从来没有去认真记过.回头仔细看了下分类和继承才发现其实就两对:字节流的抽象类是InputS ...
- Linux安装微信
地址:http://www.toutiao.com/i6362126617556288001/#6649976-tsina-1-90079-4471e2b057b5019ad452c722f04bba ...