这篇文章主要介绍了大蟒模拟登陆网站的示例,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
目录
使用已有甜饼干登陆登陆获取烹饪形式数据
请求有效负载
登陆后用会议保持登陆状态调用浏览器登陆
使用已有甜饼干登陆
使用浏览器登陆,获取浏览器中的甜饼干信息,来进行登陆。
我们以博客园为例,先登录博客园账号。我们访问随笔列表,在控制台我们可以看到我们登陆后浏览器的甜饼干
剔除一些数据统计及分析的饼干,剩下的就是登陆可能需要的CNBlogsCookie。和。Cnblogs。AspNetCore . Cookies
# _ga谷歌分析甜饼干
# UM_distinctid友盟甜饼干
# CNZZxxx CNZZcookie
# __utma,__utmc,__utmz google统计网站
# Hm_lvt_xxx百度统计网站
导入urllib.request
url='https://i.cnblogs.com/posts '
user _ agent=' Mozilla/5.0(Windows NT 10.0;win 64x 64)apple WebKit/537.36(KHTML,像壁虎一样)Chrome/77。0 .3865 .90 Safari/537.36 '
#浏览器登录后得到的饼干,也就是刚才复制的字符串
cookie_str=' .CNBlogsCookie=xxx' Cnblogs。AspNetCore.Cookies=xxx '
标题={
'用户代理:用户代理,
' cookie':cookie_str
}
req=urllib.request.Request(url,headers=headers)
resp=URL库。请求。urlopen(请求).阅读()。解码(“utf-8”)
打印(责任)
登陆获取甜饼干
登陆的表单一般是使用的表单数据,现在也有些表单使用请求有效负载使用json格式传参。
格式数据如药智网
请求有效负载如博客园
格式数据
博客园的登陆需要拖动验证所以略过。我们以药智网为例,我们打开控制台可以看到登陆需要传的表单参数,这里是使用的格式数据表单。我们模拟登陆后获取到登陆后的饼干,然后访问登录后的个人中心页面。
导入urllib.request
导入cookiejar
url='https://www.yaozh.com/login '
user _ agent=' Mozilla/5.0(Windows NT 10.0;win 64x 64)apple WebKit/537.36(KHTML,像壁虎一样)Chrome/77。0 .3865 .90 Safari/537.36 '
#表单数据数据
数据={ '用户名': '用户名,
密码': '密码,
formhash': 'C3086BBA84 ',
backurl ':' https://www .耀日。com/' }
post _ data=urllib。解析。urlencode(数据).编码(“utf-8”)
# 请求头设置
标题={
'用户代理:用户代理
}
# 构造登陆请求
req=urllib.request.Request(url,headers=headers,data=post_data)
#饼干
cookie=http。库克雅尔。cookiejar()
# 构造一个开启工具携带登录后的甜饼干
opener=URL lib。请求。build _ opener(URL lib。请求。httpcookieprocessor(cookie))
# 发送登陆请求
resp=opener.open(req)
打印(责任)
# 登录后个人中心
URL=' https://www。耀日。' com/member/'
# 构造访问请求
req=urllib.request.Request(url,headers=headers)
resp=opener.open(req).阅读()。解码(“utf-8”)
打印(责任)
请求有效负载
如果登陆需要请求有效负载我们需要将参数转为json字符串并在头部设置内容类型
导入json
.
data={'loginType': '1 ',
" pwdOrVerifyCode ":"密码,
用户标识":"账号,
uaToken ":",
webUmidToken':''}
标题={
内容类型":"应用程序/JSON;字符集=UTF-8 ',
'用户代理:用户代理
}
req=urllib.request.Request(url,headers=headers,data=json.dumps(data))
.
登陆后用会议保持登陆状态
我们用要求模块的会议对象来保存回话信息
导入请求
url='https://www.yaozh.com/login '
user _ agent=' Mozilla/5.0(Windows NT 10.0;win 64x 64)apple WebKit/537.36(KHTML,像壁虎一样)Chrome/77。0 .3865 .90 Safari/537.36 '
#表单数据数据
data={'username': 'chenjy1225 ',
pwd': '19931225yjy ',
formhash': 'C3086BBA84 ',
backurl ':' https://www .耀日。com/' }
#构造会议
会话=请求。会话()
# 发送邮政请求
resp=session.post(url,data)
# 登录后个人中心
URL=' https://www。耀日。' com/member/'
# 发送请求访问个人中心
resp=会话。获取(URL)。内容。解码(“utf-8”)
打印(责任)
调用浏览器登陆
我们也可以在程序中调用一个浏览器来访问登陆网站。在大蟒中使用硒库就能轻松实现调用浏览器,被控制的浏览器可以是chrome、firefox等。
以前较常用的还是幻象但是幻象被大蟒弃用了。
用户警告:对幻象的硒支持已被否决,请使用铬或火狐浏览器的不在意的版本
warnings.warn('对幻象的硒支持已被否决,请使用“无头”
火狐浏览器对应的壁虎
铬对应的chrnpm.taobao.org/mirrors/chromedriveromedriver
1.下载硒、火狐浏览器及火狐浏览器驱动。
2.将下载的火狐浏览器驱动壁虎放在火狐浏览器浏览器安装目录
3.将火狐浏览器浏览器安装目录添加到小路中
4.重启圆腹雅罗鱼
我们找到需要登陆时候输入的元素身份证明(识别)及登陆按钮身份证。
从硒导入网驱动程序
导入时间
# 新建硒浏览器对象,后面是geckodriver.exe下载后本地路径
浏览器=网络驱动程序.火狐()
url='https://www.yaozh.com/login '
# 浏览器访问登录页面
browser.get(url)
# 等待3s用于加载脚本文件
浏览器。隐式等待(3)
# 输入用户名
用户名=浏览器。查找元素标识('用户名)
username.send_keys('chenjy1225 ')
# 输入密码
密码=浏览器。按标识查找元素(' pwd ')
密码。send _ keys(' 19931225 yjy ')
# 点击登录按钮
log in _ button=浏览器。按标识查找元素('按钮')
登录按钮提交()
# 网页截图
浏览器。save _ snapshot(' snapshot。png’)
# 强制等待5s,等待登录后的跳转
时间。睡眠(5)
URL=' https://www。耀日。' com/member/'
browser.get(url)
# 网页截图个人中心
浏览器。保存屏幕截图('屏幕截图1。png’)
# 关闭浏览器
browser.quit()
截图。巴布亚新几内亚:
截图1.png:
以上就是大蟒模拟登陆网站的示例的详细内容,更多关于大蟒模拟登陆网站的资料请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。