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 相关文章推荐
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
Jun 18 Python
python判断字符串是否包含子字符串的方法
Mar 24 Python
python 性能提升的几种方法
Jul 15 Python
python读取excel表格生成erlang数据
Aug 26 Python
彻底理解Python list切片原理
Oct 27 Python
ubuntu安装sublime3并配置python3环境的方法
Mar 15 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
Python selenium的基本使用方法分析
Dec 21 Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 Python
python实现交并比IOU教程
Apr 16 Python
详解Python中下划线的5种含义
Jul 15 Python
Python面向对象编程之类的概念
Nov 01 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实现的获取URL信息的类
2007/01/02 PHP
php array的学习笔记
2012/05/10 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
Vue实现手机计算器
2020/08/17 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
[49:11]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.20
2020/12/23 DOTA
对Python中plt的画图函数详解
2018/11/07 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
在python image 中实现安装中文字体
2020/05/16 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
国际经济贸易专业推荐信
2013/11/06 职场文书
大专毕业生求职信
2014/07/05 职场文书
商务邀请函
2015/01/30 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL