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的urllib和urllib2模块制作爬虫的实例教程
Jan 20 Python
django模板加载静态文件的方法步骤
Mar 01 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
May 13 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
使用Python检测文章抄袭及去重算法原理解析
Jun 14 Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
Oct 30 Python
python zip()函数的使用示例
Sep 23 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
Dec 21 Python
基于 Python 实践感知器分类算法
Jan 07 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 Python
Python常用配置文件ini、json、yaml读写总结
Jul 09 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
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
基于php编程规范(详解)
2017/08/17 PHP
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
python计算书页码的统计数字问题实例
2014/09/26 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
Python OpenCV实现视频分帧
2019/06/01 Python
python可视化text()函数使用详解
2020/02/11 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
python小白切忌乱用表达式
2020/05/29 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
娇韵诗俄罗斯官方网站:Clarins俄罗斯
2020/10/03 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
我的五年职业生涯规划
2014/01/23 职场文书
安全大检查反思材料
2014/01/31 职场文书
银行求职信模板
2015/03/20 职场文书
Go 内联优化让程序员爱不释手
2022/06/21 Golang