zoukankan      html  css  js  c++  java
  • python_爬虫_通过selenium获取人人网cookie值并模拟登陆个人界面

    平台:mac

    网站:人人网

    最近练习爬虫登陆,方法一是找页面里的js文件,通过解析js文件找到cookie信息再保持。但现在的站点登陆都有验证码,而且最烦的是request时data表单里的值基本上没有不加密的,js学的不好,就别想着破解了。所以想起了用的比较少的selenium模块,用于模拟登陆并获取cookie。

    import time,random
    from selenium import webdriver
    import requests
    from urllib import request
    from lxml import etree
    
    driver = webdriver.Chrome(executable_path=r'/Applications/Google Chrome.app/chromedriver')
    driver.get('http://www.renren.com/PLogin.do')
    time.sleep(2)
    driver.find_element_by_id('email').clear()
    driver.find_element_by_id('email').send_keys('myusername')  # 输入用户名
    driver.find_element_by_id('password').clear()
    driver.find_element_by_id('password').send_keys('mypassword')  # 输入密码
    
    img_url = 'http://icode.renren.com/getcode.do?t=web_login&rnd='+str(random.random())
    request.urlretrieve(img_url,'renren_yzm.jpg')
    try:
        driver.find_element_by_id('icode').clear()
        img_res = input('输入验证码:')  # 如果需要输入验证码,可以手工,或者接口给打码平台
        driver.find_element_by_id('icode').send_keys(img_res)
    except:
        pass
    driver.find_element_by_id('autoLogin').click()  # 自动登陆
    driver.find_element_by_id('login').click()  # 登陆
    time.sleep(3)
    cookie_items = driver.get_cookies()  # 获取cookie值
    
    post = {} # 保存cookie值
    for cookie in cookie_items:
        post[cookie['name']] = cookie['value']
    print(post['t'])  # 人人网登陆后需要保持登陆的cookie信息
    driver.quit()  # 退出selenium
    # ------------------------------------------------------------
    
    url = 'http://www.renren.com/265025131/profile'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
        'Cookie':'t='+post['t'],
    }
    response = requests.get(url,headers=headers)
    print('-'*50)
    
    html = etree.HTML(response.text)
    title = html.xpath('//title/text()')
    print('目前得到的页面信息',title)
    print(response.url)

    总结:使用selenium模拟登陆、获取cookie没用多少时间,但想当然的以为进入renren的个人页面必须使用获取的所有cookie值,徒浪费N多个小时,结果只保留了cookie内的't'值,就做到保持登陆,所以,不断的测试,是比较重要的。

  • 相关阅读:
    <转> Lua使用心得(2)
    (转) Lua使用心得一 LUA和VC整合
    Highcharts 的实际实践一
    Springmvc4 com/fasterxml/jackson/core/JsonProcessingException
    如何在其他电脑上运行VS2005编译的DEBUG版应用程序
    [转]深入分析 Java 中的中文编码问题
    自动白平衡技术(WhiteBalance)(转自Harri的blog)
    沉思录(1)——EricKing工作的一个月
    图像处理一(BMP的格式说明)
    ios检查版本更新
  • 原文地址:https://www.cnblogs.com/hejianlong/p/9478813.html
Copyright © 2011-2022 走看看