• 技术文章 >后端开发 >Python教程

    Python中两种方法实现模拟登陆的代码实例

    黄舟黄舟2017-08-10 14:18:36原创873
    这篇文章主要介绍了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中两种方法实现模拟登陆的代码实例的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Python 模拟 实现
    上一篇:关于Python操作文件方法的总结(收藏) 下一篇:Python中递归神经网络实现的简单示例分享
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 总结分享Python冷门的技巧• python虚拟环境配置与管理• 聊聊Python中列表和字典前加星号(**)• 一文搞懂Python爬虫解析器BeautifulSoup4• Python怎么利用contextvars实现管理上下文变量
    1/1

    PHP中文网