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使用Tkinter显示网络图片的方法
Apr 24 Python
python中随机函数random用法实例
Apr 30 Python
python中lambda与def用法对比实例分析
Apr 30 Python
Python学习小技巧之列表项的推导式与过滤操作
May 20 Python
python xpath获取页面注释的方法
Jan 14 Python
对python中的try、except、finally 执行顺序详解
Feb 18 Python
在linux系统下安装python librtmp包的实现方法
Jul 22 Python
python线程的几种创建方式详解
Aug 29 Python
python3连接mysql获取ansible动态inventory脚本
Jan 19 Python
Python的历史与优缺点整理
May 26 Python
python爬取招聘要求等信息实例
Nov 20 Python
python通过opencv调用摄像头操作实例分析
Jun 07 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
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
ECMAScript 基础知识
2007/06/29 Javascript
js表数据排序 sort table data
2009/02/18 Javascript
浅谈javascript 面向对象编程
2009/10/28 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
Python增量循环删除MySQL表数据的方法
2016/09/23 Python
Python中对象的引用与复制代码示例
2017/12/04 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
python-视频分帧&多帧合成视频实例
2019/12/10 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
如何卸载python插件
2020/07/08 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
python编写实现抽奖器
2020/09/10 Python
财务助理岗位职责
2013/11/10 职场文书
家长会学生家长演讲稿
2013/12/29 职场文书
导游词400字
2015/02/13 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python
Javascript设计模式之原型模式详细
2021/10/05 Javascript
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js