• 目标:实现豆瓣登陆;
  • 方法:使用requests.Session 来处理cookies
  • 问题:验证码输入

关于headers

1.实现登陆

# -*- coding: utf-8 -*-
import requests
from HTMLParser import HTMLParser
class DoubanClient(object):def __init__(self):object.__init__(self)#在chrome浏览器进行登陆,登陆之后:右键 检查-Newwork-login-Headers,可以查看headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36','Origin': 'https://accounts.douban.com'}self.session = requests.session()  # 创建一个sessionself.session.headers.update(headers)  # 对头进行定制def login(self, usename, pwd, source='index_nav', redir='https://www.douban.com', user_login='登陆'):#下面的地址可能有变化,根据实际进行更改url = 'https://accounts.douban.com/login'  # 访问登陆的主页面,为了获取验证码id和验证码图片地址r = self.session.get(url)(captcha_id, captcha_url) = _get_captcha(r.content)  # 解析网页内容,从这个函数中获取验证码if captcha_id:captcha_solution = raw_input('Please input solution for captcha[%s]:' % captcha_url)  # 用户输入验证data = {'source': source,'form_email': usename,'form_password': pwd,'redir': redir,  # 跳转地址'user_login': user_login,}if captcha_id:data['captcha-id'] = captcha_iddata['captcha-solution'] = captcha_solutionheaders = {'Referer': 'https://accounts.douban.com/login','Host': 'accounts.douban.com'}self.session.post(url, data=data, headers=headers)print(self.session.cookies.items())#下面这个函数用在解析html文件中,tag匹配
def _attr(attrs, attrname):for attr in attrs:if attr[0] == attrname:return attr[1]return attr[0]
def _get_captcha(content):class CaptchaParser(HTMLParser):def __init__(self):HTMLParser.__init__(self)self.captcha_id = Noneself.captcha_url = Nonedef handle_starttag(self, tag, attrs):if tag == 'img' and _attr(attrs, 'id') == 'captcha_image' and _attr(attrs, 'class') == 'captcha_image':self.captcha_url = _attr(attrs, 'src')  # 如果是url = srcif tag == 'input' and _attr(attrs, 'type') == 'hidden' and _attr(attrs, 'name') == 'captcha-id':self.captcha_id = _attr(attrs, 'value')p = CaptchaParser()p.feed(content)return p.captcha_id, p.captcha_url
def _get_ck(content):class CKParser(HTMLParser):def __init__(self):HTMLParser.__init__(self)self.ck = Nonedef handle_starttag(self, tag, attrs):if tag == 'input' and _attr(attrs, 'type') == 'hidden' and _attr(attrs, 'name') == 'ck':self.ck = _attr(attrs, 'value')p = CKParser()p.feed(content)return p.ck
c = DoubanClient()
c.login('wangdachui@163.com', 'dashab123')

注:其中登陆的地址可能发生改变,另外注意大小写,一切需要根据看到的headers

Pyton爬虫实现豆瓣登陆相关推荐

  1. 豆瓣网络爬虫-java网络爬虫[验证码模拟登陆]详细介绍

    目录 抓包介绍 解决验证码的思路 验证码地址拼接 爬虫实战 爬虫架构 model main 解析htmlparse 数据库操作程序db 近期,有人将本人博客,复制下来,直接上传到百度文库等平台. 本文 ...

  2. Java爬虫获取豆瓣的短评数据

    Java爬虫获取豆瓣的短评数据 打开豆瓣的选电影页面的链接,可以看到该网页的下面分为热门,最新,经典等栏目分类,网页每次显示20部电影,通过几部电影的查看,可以发现电影的短评页https://movi ...

  3. xhr get获取文件流下载文件_python爬虫实战——豆瓣电影get初体验

    影评许可证 公众号[2019]第22期 本栏目由"数据皮皮侠"独家呈献 专场 python爬虫实战--豆瓣电影get初体验 2019.10.28 / 早上7点场 / 免费 本期&q ...

  4. Python 爬虫分析豆瓣 TOP250 之 信息字典 和 马斯洛的锥子

    问题 本文是对<Python 爬虫分析豆瓣 TOP250 告诉你程序员业余该看什么书?> 一文的补充 我们以<追风少年>为例 用chrome的developer tool查看源 ...

  5. Python爬虫(5):豆瓣读书练手爬虫

    Python爬虫(5):豆瓣读书练手爬虫 我们在之前的文章中基本上掌握了Python爬虫的原理和方法,不知道大家有没有练习呢.今天我就来找一个简单的网页进行爬取,就当是给之前的兵书做一个实践.不然不就 ...

  6. 爬虫实战——豆瓣电影Top250

    爬虫实战--豆瓣电影Top250 准备阶段 网页分析 在目标网页直接ctrl+u查看网页源代码(或者F12审查),豆瓣的网页源代码就出现了(非常友好): <!DOCTYPE html> & ...

  7. 湖南工业大学教务系统爬虫(模拟登陆篇)

    湖南工业大学教务系统爬虫(模拟登陆篇) 之前写了一个教务系统的爬虫程序,可以根据用户要求爬取任何一部分的数据,也可以模拟提交数据,可能这也是部分工大计算机学生比较感兴趣的,所以今天就在这分享一下整个的 ...

  8. 第一期:【python爬虫】豆瓣电影top250

    1.首先看最后的爬取结果 还有电影的信息,我保存的是csv文件.可以学到爬虫的相关知识和数据保存的信息. 删除信息,直接上代码. 红色圆点旁边的是清空.(如上图所示) 下面请求中的第一个或者前几个(如 ...

  9. Python爬虫之豆瓣排行榜(正则表达式)

    Python爬虫之豆瓣排行榜(正则表达式) 1. 项目目标 使用Chrome浏览器打开网页https://maoyan.com/ ,切换到[榜单],[TOP100榜].本次项目就是要获取豆瓣排名Top ...

最新文章

  1. npm的插件如何直接在html中使用,webpack插件之htmlWebpackPlugin
  2. Making Sense of Cryptoeconomics
  3. python 累积正态分布函数_Python编程基础—Python语句书写规范
  4. 检测php加密方式,一种php加密方式
  5. docker mysql 生产环境_如何部署Docker MySQL生产环境?
  6. 使用JsonConfig控制JSON lib序列化
  7. 8.1 Android Basic 数据存储 Preferences Dialog(使用对话框的Preferences)
  8. 如何避免面试现场被虐?
  9. 函数收敛:就是当x趋于无时,函数有常数c; 数列收敛 :就是当x趋于无穷时,数列x(n)是常数c; 积分收敛:就是当上界趋于无穷时,积分中的函数有常数c,也就是函数围成的面积有常数C。 数列和函
  10. python实时显示进度条_Python进度条实时显示处理进度的示例代码
  11. 服务器升级微信公告,【更新公告】8月6日先锋服务器停服更新公告
  12. JS实现动态生成表格
  13. “麒麟计划”即时响应国家政策,发力数字营销助推二手车出口贸易
  14. 一个优秀IT专家的成长历程---献给所有的颓废或即将颓废的人们(ZZ)
  15. git 更换仓库地址
  16. 【散分】庆祝自己的csdn博客突破100万访问量
  17. 面向组件编程之Unity 11.Quaternion.LookRotation 转自lijing_hi
  18. oracle simphony_MICROS Simphony | All-In-One Restaurant POS System | Oracle 中国
  19. 数据库启动失败以及在cmd(命令窗口)中启动失败原因分析和解决
  20. DW字库生成以及ts3使用

热门文章

  1. 浮窗---创建系统浮窗(可拖动)
  2. MinIO-linux-amd64下载
  3. jq 修改元素css伪类样式
  4. 等保2.0控制点总结
  5. PS技巧分享,不容错过
  6. 本地计算机出现多个网络连接,电脑网络连接出现感叹号?教你一招解决
  7. 安卓兼容7.0图库选择图片生成二维码
  8. PRN(20210421):Task-Free Continual Learning
  9. java判断某个日期是当年内第几周
  10. Delphi使用逍遥安卓模拟器