爬虫模拟登陆代码

学习新知识的时候,可能当时无法立即理解,可是经历过这一痛苦的阶段再回来看看,就有种柳暗花明的感觉 。所以要及时记笔记才对啊年轻人。               —— ——  任三爷

#coding=utf-8

"""模拟登录豆瓣"""

import requests

from lxml import etree

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

header = {

    'Host':'accounts.douban.com',

    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0',

    'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

    'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',

    'Accept-Encoding':'gzip, deflate, br',

    'Referer':'https://www.douban.com/accounts/login',

    'Content-Type':'application/x-www-form-urlencoded',

    'Content-Length':'126'

}

data= {

    'redir':'https://www.douban.com',

    'form_email':'',

    'form_password':''

}

#data和header由谷歌浏览器获得

#用户输入用户名和密码登录豆瓣

def  Login01 ( url,username,pwd ):

    data['form_email'] = username

    data['form_password'] = pwd

    s = requests.Session()

    text = s.get(url).text

    if '请输入上图中的单词' in text:    #如果有验证码

        page = etree.HTML(text)

        img = page.xpath('//img[@id="captcha_image"]/@src')    #取得验证码图片

        id = page.xpath('//div[@class="captcha_block"]/input[@type="hidden"]/@value')  #取得登录必需的验证码值

        pic = requests.get(img[0])

        with open('豆瓣验证码','wb') as f:

            for chunk in pic.iter_content(1024):

                if chunk:

                    f.write(chunk)

        captcha = input('请输入验证码:')

        print captcha

        data['captcha-solution'] = captcha

        data['captcha-id'] = id[0]

    p = s.post(url, headers=header, data=data)

    print "p.text: ", p.text

    if '的帐号' in p.text:

        print('登录成功')

    else:

        print('登录失败')

if __name__ == '__main__':

    url = "https://www.douban.com/accounts/login"

    # username = input('请输入用户名:')

    username = '15711057804'

    # pwd = input('请输入密码:')

    pwd = 'qst12345'

    Login01(url, username, pwd)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,896评论 18 139
  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 2,495评论 1 37
  • # 一度蜜v3.0协议 --- # 交互协议 [TOC] ## 协议说明 ### 请求参数 下表列出了v3.0版协...
    c5e350bc5b40阅读 668评论 0 0
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,510评论 0 17
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 3,721评论 2 7