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设计模式编程中的访问者与观察者模式
Jan 26 Python
Django中ORM表的创建和增删改查方法示例
Nov 15 Python
Python变量赋值的秘密分享
Apr 03 Python
用pycharm开发django项目示例代码
Oct 24 Python
python列表list保留顺序去重的实例
Dec 14 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
Django框架表单操作实例分析
Nov 04 Python
利用python绘制数据曲线图的实现
Apr 09 Python
jupyter notebook 实现matplotlib图动态刷新
Apr 22 Python
浅谈Python协程
Jun 17 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 Python
详解Python中string模块除去Str还剩下什么
Nov 30 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
抓取YAHOO股票报价的类
2009/05/15 PHP
PHP合并两个数组的两种方式的异同
2012/09/14 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
详解cordova打包成webapp的方法
2017/10/18 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
初步解析Python下的多进程编程
2015/04/28 Python
Python实现二维数组输出为图片
2018/04/03 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
python设置中文界面实例方法
2020/10/27 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
error和exception有什么区别
2012/10/02 面试题
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
市政施工员自我鉴定
2014/01/15 职场文书
村抢险救灾方案
2014/05/09 职场文书
申论倡议书范文
2014/05/13 职场文书
聊一聊python常用的编程模块
2021/05/14 Python
MySQL通过binlog恢复数据
2021/05/27 MySQL
Python实现简单的俄罗斯方块游戏
2021/09/25 Python