Python 模拟登陆的两种实现方法


Posted in Python onAugust 10, 2017

Python 模拟登陆的两种实现方法

有时候我们的抓取项目时需要登陆到某个网站上,才能看见某些内容的,所以模拟登陆功能就必不可少了,散仙这次写的文章,主要有2个例子,一个是普通写法写的,另外一个是基于面向对象写的。

模拟登陆的重点,在于找到表单真实的提交地址,然后携带cookie,post数据即可,只要登陆成功,我们就可以访问其他任意网页,从而获取网页内容。

方式一:

import urllib.request 
import urllib.parse 
import http.cookiejar 
#post的内容 
values={ 
'logon.x':'linke', 
'password':'xxxx', 
'username':'xxxxx' 
} 
 
#登陆的地址 
logUrl="http://192.168.32.112:8080/templates/index/hrlogon.do" 
 
#构建cook 
cook=http.cookiejar.CookieJar() 
 
#构建openner 
openner=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cook)) 
 
#添加headers 
openner.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')] 
 
r=openner.open(logUrl,urllib.parse.urlencode(values).encode()) 
 
#print(r.read().decode('gbk')) 
 
r=openner.open("http://192.168.132.62:8080/kq/kqself/card/carddata.do?b_query=link") 
 
print(r.read().decode('gbk'))

方式二:

import urllib 
import urllib.request 
import urllib.parse 
import http.cookiejar 
import re 
 
 
class loginRLKQ: 
  post_data=b""; 
  def __init__(self): 
    #初始化类,cook的值 
    cj=http.cookiejar.CookieJar() 
    opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) 
    opener.addheaders=[('User-Agent','Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')] 
    #初始化全局opener 
    urllib.request.install_opener(opener) 
 
  #login方法需要加入post数据 
  def login(self,loginurl,encode): 
    #模拟登陆 
    req=urllib.request.Request(loginurl,self.post_data) 
    rep=urllib.request.urlopen(req) 
    d=rep.read() 
    #print(d) 
    d=d.decode(encode) 
    return d 
  #登陆之后获取其他网页方法 
  def getUrlContent(self,url,encode): 
    req2=urllib.request.Request(url) 
    rep2=urllib.request.urlopen(req2) 
    d2=rep2.read() 
    d22=d2.decode(encode) 
    return d22 
if __name__=="__main__": 
    #实例化类 
    x=loginRLKQ() 
    #给post数据赋值 
    x.post_data=urllib.parse.urlencode({'username':"xxdd",'password':'xxdd','logon.x':'linke'}).encode(encoding="gbk") 
    #登陆 
    y=x.login("http://192.168.132.61:8080/templates/index/hrlogon.do","gbk") 
    #获取网页信息 
    print(x.getUrlContent("http://192.124.32.16:8080/kq/kqself/card/carddata.do?b_query=link","gbk"))

以上就是Python 模拟登陆的实现方法,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
跟老齐学Python之不要红头文件(2)
Sep 28 Python
python中defaultdict的用法详解
Jun 07 Python
python urllib爬取百度云连接的实例代码
Jun 19 Python
30秒轻松实现TensorFlow物体检测
Mar 14 Python
python smtplib发送带附件邮件小程序
May 22 Python
Python Web编程之WSGI协议简介
Jul 18 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
python单例设计模式实现解析
Jan 07 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 Python
Python pathlib模块使用方法及实例解析
Oct 05 Python
python 基于selectors库实现文件上传与下载
Dec 31 Python
Python 网页解析HTMLParse的实例详解
Aug 10 #Python
关于Python中浮点数精度处理的技巧总结
Aug 10 #Python
Python 处理数据的实例详解
Aug 10 #Python
Python 由字符串函数名得到对应的函数(实例讲解)
Aug 10 #Python
关于Python中空格字符串处理的技巧总结
Aug 10 #Python
Python排序算法实例代码
Aug 10 #Python
简单谈谈python中的语句和语法
Aug 10 #Python
You might like
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
Dojo 学习要点
2010/09/03 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
Python 深入理解yield
2008/09/06 Python
python进阶教程之动态类型详解
2014/08/30 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
python web框架 django wsgi原理解析
2019/08/20 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
实习医生自我评价
2013/09/22 职场文书
会计毕业生求职简历的自我评价
2013/10/20 职场文书
白酒市场营销方案
2014/02/25 职场文书
产品质量承诺书
2014/03/27 职场文书
担保书怎么写
2014/04/01 职场文书
禁止酒驾标语
2014/06/25 职场文书
乡镇爱国卫生月活动总结
2014/06/25 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
门店店长岗位职责
2015/04/14 职场文书
党小组推荐意见
2015/06/02 职场文书
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS
永中文档在线转换预览基于nginx配置部署方案
2022/06/10 Servers
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers