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 测试实现方法
Dec 24 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
Python实现的批量修改文件后缀名操作示例
Dec 07 Python
python 为什么说eval要慎用
Mar 26 Python
Python Django的安装配置教程图文详解
Jul 17 Python
Python3之字节串bytes与字节数组bytearray的使用详解
Aug 27 Python
Python序列对象与String类型内置方法详解
Oct 22 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 Python
Django模板获取field的verbose_name实例
May 19 Python
小结Python的反射机制
Sep 28 Python
PyMongo 查询数据的实现
Jun 28 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里面的抽象类
2010/01/28 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
js DOM的学习笔记
2011/12/22 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
Node.js的特点详解
2017/02/03 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
2017/04/12 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
redis数据库及与python交互用法简单示例
2019/11/01 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
2016/12/20 HTML / CSS
这段代码难道不该打印出56吗
2013/02/27 面试题
农民工工资发放承诺书
2014/03/31 职场文书
学习十八大的心得体会
2014/09/12 职场文书
烟台的海导游词
2015/02/02 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
消防宣传标语大全
2015/08/03 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
导游词之无锡古运河
2019/11/14 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS