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进行TCP网络编程的教程
Apr 29 Python
改进Django中的表单的简单方法
Jul 17 Python
python win32 简单操作方法
May 25 Python
Python实现的快速排序算法详解
Aug 01 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
对python使用telnet实现弱密码登录的方法详解
Jan 26 Python
python七夕浪漫表白源码
Apr 05 Python
python文字转语音的实例代码分析
Nov 12 Python
如何实现更换Jupyter Notebook内核Python版本
May 18 Python
Python通过len函数返回对象长度
Oct 22 Python
python IP地址转整数
Nov 20 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
GD输出汉字的函数的分析
2006/10/09 PHP
模仿OSO的论坛(二)
2006/10/09 PHP
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
php使用pear_smtp发送邮件
2016/04/15 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
js技巧--转义符"\"的妙用
2007/01/09 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
js实现仿百度瀑布流的方法
2015/02/05 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
老生常谈js数据类型
2017/08/03 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
原生js生成图片验证码
2020/10/11 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
Tensorflow卷积神经网络实例
2018/05/24 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
python默认参数调用方法解析
2020/02/09 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
HTML5 与 XHTML2
2008/10/17 HTML / CSS
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
聊城大学毕业生自荐书
2014/02/01 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫