Python 模拟登陆的两种实现方法

 更新时间:2017年08月10日 09:29:09   作者:qindongliang1922  
这篇文章主要介绍了Python 模拟登陆的两种实现方法的相关资料,这里提供两种方法一个是普通写法写的,另外一个是基于面向对象写的,模拟登录成功后才可能抓取内容,需要的朋友可以参考下

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实现备份MySQL数据库的方法示例

    Python实现备份MySQL数据库的方法示例

    这篇文章主要介绍了Python实现备份MySQL数据库的方法,涉及Python针对mysql数据库的连接及基于mysqldump命令操作数据库备份的相关实现技巧,需要的朋友可以参考下
    2018-01-01
  • Python函数参数的4种方式

    Python函数参数的4种方式

    本文主要介绍了Python函数参数的4种方式,主要包括必选参数,默认参数,可选参数,关键字参数,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Python3.6日志Logging模块简单用法示例

    Python3.6日志Logging模块简单用法示例

    这篇文章主要介绍了Python3.6日志Logging模块简单用法,结合实例形式分析了Python3.6环境下日志Logging模块设置格式、文件流输出相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • Python pandas入门系列之众数和分位数

    Python pandas入门系列之众数和分位数

    分位数(Quantile),也称分位点,是指将一个随机变量的概率分布范围分为几个等份的数值点,分析其数据变量的趋势,而众数(Mode)是代表数据的一般水平,这篇文章主要给大家介绍了Python pandas系列之众数和分位数的相关资料,需要的朋友可以参考下
    2021-08-08
  • Python绘制散点密度图的三种方式详解

    Python绘制散点密度图的三种方式详解

    散点密度图是在散点图的基础上,计算了每个散点周围分布了多少其他的点,并通过颜色表现出来。本文主要介绍了Python绘制散点密度图的三种方式,需要的可以参考下
    2022-06-06
  • Python 3.7新功能之dataclass装饰器详解

    Python 3.7新功能之dataclass装饰器详解

    这篇文章主要给大家介绍了关于Python 3.7新功能之dataclass装饰器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • python正则表达式re.sub各个参数的超详细讲解

    python正则表达式re.sub各个参数的超详细讲解

    Python 的 re 模块提供了re.sub用于替换字符串中的匹配项,下面这篇文章主要给大家介绍了关于python正则表达式re.sub各个参数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 代码解析python标准库logging模块

    代码解析python标准库logging模块

    这篇文章主要为大家介绍了代码解析python标准库logging模块,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python eval()函数使用详情

    python eval()函数使用详情

    这篇文章主要来来聊聊python eval()函数使用方法本文将以python eval()函数使用方法来展开内容,需要的小伙伴可以参考以下文章的内容,希望对你有所帮助
    2021-10-10
  • Python PySpider爬虫框架安装使用教程

    Python PySpider爬虫框架安装使用教程

    PySpider是一个Python编写的分布式网络爬虫框架,它可以帮助开发者快速构建和部署爬虫,并支持爬虫任务的分布式运行,PySpider基于Twisted网络框架和MongoDB数据库,具有高效、稳定、易用等特点,同时还提供了一套Web界面,可以方便地查看爬虫任务的运行状态和结果
    2023-11-11

最新评论