美文网首页
python利用selenium获取cookie实现免登陆

python利用selenium获取cookie实现免登陆

作者: 蜀山客e | 来源:发表于2020-09-21 15:44 被阅读0次

    1.安装selenium package:

    sudo pip install -U selenium  
    

    如果没有pip,先安装pip:

    sudo python setup.py install  
    

    2.引入selenium package, 建立webdriver对象:

        from selenium import webdriver  
          
          
        sel = selenium.webdriver.Chrome()  
    

    在这一步,可能会提示chrome path 的错误,这是因为操作chrome浏览器需要有ChromeDriver的驱动来协助,驱动下载地址:
    http://chromedriver.storage.googleapis.com/index.html?path=2.7/ .下载相应版本,并解压到目录

    /usr/bin  
    

    3.打开设定的url,并等待response:

        loginurl = 'http://weibo.com/'  
        #open the login in page  
        sel.get(loginurl)  
        time.sleep(10)  
    

    4.通过xpath找到登录框,并填入相应帐号密码,模拟点击登录:

        #sign in the username  
        try:  
            sel.find_element_by_xpath("//div[@id='pl_login_form']/div/div[2]/div[1]/div[1]/input").send_keys('yourusername')  
            print 'user success!'  
        except:  
            print 'user error!'  
        time.sleep(1)  
        #sign in the pasword  
        try:  
            sel.find_element_by_xpath("//div[@id='pl_login_form']/div/div[2]/div[2]/div[1]/input").send_keys('yourPW')  
            print 'pw success!'  
        except:  
            print 'pw error!'  
        time.sleep(1)  
        #click to login  
        try:  
            sel.find_element_by_xpath("//div[@id='pl_login_form']/div/div[2]/div[6]/a").click()  
            print 'click success!'  
        except:  
            print 'click error!'  
        time.sleep(3)  
    

    5.验证登录成功与否,若currenturl发生变化,则认为登录成功:

        curpage_url = sel.current_url  
        print curpage_url  
        while(curpage_url == loginurl):  
            #print 'please input the verify code:'  
            print 'please input the verify code:'  
            verifycode = sys.stdin.readline()  
            sel.find_element_by_xpath("//div[@id='pl_login_form']/div/div[2]/div[3]/div[1]/input").send_keys(verifycode)  
            try:  
                sel.find_element_by_xpath("//div[@id='pl_login_form']/div/div[2]/div[6]/a").click()  
                print 'click success!'  
            except:  
                 print 'click error!'  
            time.sleep(3)  
            curpage_url = sel.current_url  
    

    6.通过对象的方法获取当前访问网站的session cookie:

        #get the session cookie  
        cookie = [item["name"] + "=" + item["value"] for item in sel.get_cookies()]  
        #print cookie  
          
        cookiestr = ';'.join(item for item in cookie)  
        print cookiestr  
    

    7.得到cookie之后,就可以通过urllib2访问相应的网站,并可实现网页爬取等工作:

        import urllib2  
          
          
        print '%%%using the urllib2 !!'  
        homeurl = sel.current_url  
        print 'homeurl: %s' % homeurl  
        headers = {'cookie':cookiestr}  
        req = urllib2.Request(homeurl, headers = headers)  
        try:  
            response = urllib2.urlopen(req)  
            text = response.read()  
            fd = open('homepage', 'w')  
            fd.write(text)  
            fd.close()  
            print '###get home page html success!!'  
        except:  
            print '### get home page html error!!'  
    

    点赞关注~~持续分享,642830685,免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。

    相关文章

      网友评论

          本文标题:python利用selenium获取cookie实现免登陆

          本文链接:https://www.haomeiwen.com/subject/pkbvyktx.html