python爬虫(登录豆瓣并修改签名)
代码:
1 #coding: utf-82 3 import requests4 from HTMLParser import HTMLParser5 6 7 class DoubanClient(object):8 def __init__(self):9 object.__init__(self)10 11 myheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36','Origin': 'https://accounts.douban.com'} #浏览器开发者:Request Headers12 13 self.session = requests.session() #requests包 创建session14 self.session.headers.update(myheaders) #将定制的header加入session15 16 17 def login(self, username, password,source='None',redir='https://www.douban.com/',login='登录'):18 #浏览器开发者:Form Data19 20 url = 'https://accounts.douban.com/login' #网页URL21 r = self.session.get(url) #用session访问该网页22 (captcha_id, captcha_url) = _get_captcha(r.content) #调用get_captchar()解析网页中的内容,获取验证码的id和url23 24 #如果得到了验证码的id和url,提示用户打开url并输入其中的验证码25 if captcha_id:26 captcha_solution = raw_input('please input solution for captcha [%s]:' % captcha_url)27 28 url = 'https://accounts.douban.com/login'29 mydata = {'form_email': username,30 'form_password': password,31 'source': source,32 'redir': redir,33 'login': login}34 myheaders = {'referer': 'https://acocunts.douban.com/login',35 'host': 'accounts.douban.com'}36 #浏览器开发者:Request Headers37 38 #将验证码的id和用户输入的验证码 加入post的data中39 if captcha_id:40 mydata['captcha-id'] = captcha_id41 mydata['captcha-solution'] = captcha_solution42 43 self.session.post(url, data=mydata, headers=myheaders) #post发出请求44 print(self.session.cookies.items())45 46 #更改签名47 def edit_signature(self, username, signature):48 url = 'https://www.douban.com/people/%s/' % username #网页URL49 r = self.session.get(url) #用session访问该网页50 mydata = {'ck': _get_ck(r.content),51 'signature': signature}52 myurl = 'https://www.douban.com/j/people/%s/edit_signature' % username53 myheaders = {'referer': url,54 'host': 'www.douban.com',55 'x-requested-with': 'XMLHttpRequest'}56 r = self.session.post(myurl, data=mydata, headers=myheaders) #post57 print(r.content)58 59 60 def _attr(attrs, attrname):61 for attr in attrs:62 if attr[0] == attrname:63 return attr[1]64 return None65 66 67 def _get_captcha(content):68 #获取验证码的id和url 69 class CaptchaParser(HTMLParser): #继承父类HTMLParser70 def __init__(self):71 HTMLParser.__init__(self)72 self.captcha_id = None #默认值设为None73 self.captcha_url = None74 75 def handle_starttag(self, tag, attrs):76 if tag == 'img' and _attr(attrs, 'id') == 'captcha_image' and _attr(attrs, 'class') == 'captcha_image':77 #根据网页框架进行条件限定,定位至验证码图片78 self.captcha_url = _attr(attrs, 'src') #得到验证码图片的url79 80 if tag == 'input' and _attr(attrs, 'type') == 'hidden' and _attr(attrs, 'name') == 'captcha-id':81 #条件限定,定位至验证码id82 self.captcha_id = _attr(attrs, 'value') #得到验证码的id value83 84 p = CaptchaParser()85 p.feed(content) #feed()向解析器喂数据86 return p.captcha_id, p.captcha_url87 88 89 def _get_ck(content):90 91 class CKParser(HTMLParser):92 def __init__(self):93 HTMLParser.__init__(self)94 self.ck = None95 96 def handle_starttag(self, tag, attrs):97 if tag == 'input' and _attr(attrs, 'type') == 'hidden' and _attr(attrs, 'name') == 'ck':98 #条件限定,定位至签名框99 self.ck = _attr(attrs, 'value')
100
101 p = CKParser() #实例化类
102 p.feed(content) #feed()向解析器喂数据
103 return p.ck
104
105
106 if __name__ == '__main__':
107 c = DoubanClient()
108 c.login('791368726@qq.com', '**此处为密码**')
109 c.edit_signature('162101126', '**此处为签名**')
执行:
Google Chrome:
python爬虫(登录豆瓣并修改签名)相关推荐
- Python爬虫登录大学官网
Python爬虫登录大学官网 通过python登录大学官网(当然首先要有账号密码),内容包括:如何使用chrome查看网页信息和网络请求.分析网站通过js加密用户密码的方式.使用python登录网 ...
- python 爬虫 微博 github_GitHub 热门:各大网站的 Python 爬虫登录汇总
原标题:GitHub 热门:各大网站的 Python 爬虫登录汇总 (给数据分析与开发加星标,提升数据技能) 转自:机器之心,GitHub 作者:CriseLYJ 不论是自然语言处理还是计算机视觉,做 ...
- python 爬虫登录世纪佳缘
python 爬虫登录世纪佳缘 程序运行相关环境: win7 python2.7.13 python requests包 python beautifulsoup包 代码示例: # -*- codin ...
- 使用Python爬虫获取豆瓣影评,并用词云显示
使用Python爬虫获取豆瓣影评,并用词云显示 Python语言流行到现在,目前最受开发者喜爱的功能莫过于它的爬虫功能,以至于很多人以为Python的英语发音也是"爬虫",其实它是 ...
- Python 爬虫分析豆瓣 TOP250 之 信息字典 和 马斯洛的锥子
问题 本文是对<Python 爬虫分析豆瓣 TOP250 告诉你程序员业余该看什么书?> 一文的补充 我们以<追风少年>为例 用chrome的developer tool查看源 ...
- Python爬虫(5):豆瓣读书练手爬虫
Python爬虫(5):豆瓣读书练手爬虫 我们在之前的文章中基本上掌握了Python爬虫的原理和方法,不知道大家有没有练习呢.今天我就来找一个简单的网页进行爬取,就当是给之前的兵书做一个实践.不然不就 ...
- Python爬虫之豆瓣排行榜(正则表达式)
Python爬虫之豆瓣排行榜(正则表达式) 1. 项目目标 使用Chrome浏览器打开网页https://maoyan.com/ ,切换到[榜单],[TOP100榜].本次项目就是要获取豆瓣排名Top ...
- python爬虫获取豆瓣图书Top250
在上一篇博客<python爬虫获取豆瓣电影TOP250>中,小菌为大家带来了如何将豆瓣电影Top250的数据存入MySQL数据库的方法.这次的分享,小菌决定再带着大家去研究如何爬取豆瓣图片 ...
- Python爬虫之豆瓣上征婚交友的美女们
我在刷豆瓣的时候发现,豆瓣上居然还有一个叫我被豆油表白了的交友话题,阅读量居然高达 8087734 次,拥有 1000+ 篇话题,几乎每篇平均被阅读了 8000+ ,看了一下里面的小姐姐照片还挺多的. ...
最新文章
- pip install lxml失败原因
- re.search中与正则表达式*结合使用的注意事项
- C实战:项目构建Make,Automake,CMake
- 新版vue-cli模板下本地开发环境使用node服务器跨域
- .NET中得到计算机硬件信息
- 基于JAVA+SpringMVC+Mybatis+MYSQL的水果蔬菜商城管理系统
- python脚本入门_python 脚本学习(一)
- Kotlin(android)协程中文翻译
- intersection-over-union(IoU: 交并比)
- 广东2022年上半年系统集成项目管理工程师下午真题及答案解析
- XJOI一级题库所有题解(传送门)
- jQuery手动触发事件
- dataframe动态命名(读取不同文件并规律命名)
- 有效提高关键词排名SEO技巧实论
- 创建内嵌SIS文件的安装包
- java远程连接fpt_java远程连接本地fpt
- 微交易平台搭建开发-盘内实时K线对接
- 大数据开发跟大数据分析的区别是什么?
- Druid连接池开启数据库监控功能
- 初学者开发iOS游戏的入门必备用书——iOS 5 cocos2d游戏开发实战(第2版)
热门文章
- 从零开始学习Memcached之stats sizes命令测试
- 毕业于华东地质学院 计算机,主攻智能机器人控制等方向 王耀南当选中国工程院院士...
- “Microsoft Office Word 遇到问题需要关闭。我们对此引起的不便表示抱歉”处理方法之一
- 1024 程序员节岳麓对话、技术英雄会再奏时代新曲
- 如何使win10避免自动删除程序文件(疑似病毒),且使该文件能运行
- 利用PhotoScan生成无人机高精度正摄影像(可下载)
- PhotoShop 修复工具组
- 使用Python和OpenCV查找从摄像机到对象/标记的距离
- (内附免费下载地址)全网免费获取地形数据的方法
- U盘安装中标麒麟linux V6.0教程