python模拟登陆豆瓣网和验证码识别
来源:互联网 发布:mysql 按月份查询 编辑:程序博客网 时间:2024/05/16 14:37
使用python模拟登陆豆瓣网时遇到最大的第一个问题就是验证码的识别,这里我采用的是比较原始的方法,即获取验证码图片的url路径将图片下载到本地或者直接通过url打开。遇到的第二个问题是如何保证访问豆瓣登录页面时cookie和验证码图片的同步性,因为每次访问登录页面验证码图片的url路径都是变化的,所以如果不解决同步性的问题,每次登录肯定会失败。下面直接上代码(对于post数据的构造可以使用Firefox浏览器的HttpFox插件去解决,网上有介绍):
# coding: utf8import urllibimport urllib2import cookielibimport cStringIOfrom bs4 import BeautifulSoupfrom PIL import Image# 豆瓣网的登录页面的urlloginUrl = 'https://accounts.douban.com/login'# 点击登录后需要跳转的页面,也就是“我的豆瓣”这个页面(该路径可以在使用HttpFox进行抓包时获取到)redirectUrl = 'https://www.douban.com/people/162484790/'# 实例化cookie对象,每次访问时都会将该cookie中的信息发送到指定domain和path的服务器# 通过cookie来解决同步性的问题cookie = cookielib.CookieJar()handler = urllib2.HTTPCookieProcessor(cookie)opener = urllib2.build_opener(handler)response1 = opener.open(loginUrl)soup1 = BeautifulSoup(response1.read(), 'lxml')'''需要判断登录时是否需要输入验证码'''captchaImgDom = soup1.select_one('#captcha_image')if captchaImgDom: # 如果有验证码 captchaImgSrc = captchaImgDom['src'] print 'captchaImgSrc =============>>> ' + captchaImgSrc # 获取captcha-id prefix = 'https://www.douban.com/misc/captcha?id=' suffix = '&size=s' captchaId = captchaImgSrc[len(prefix) : len(captchaImgSrc)-len(suffix)] print 'captchaId =============>>>>> ' + captchaId # 获取captcha-solution:打开验证码图片并输入验证码 imgFile = cStringIO.StringIO(urllib2.urlopen(captchaImgSrc).read()) img = Image.open(imgFile) img.show() captchaSolution = raw_input('请输入验证码:') # 构造post数据(使用HttpFox插件抓包时获取PostData的相关key) postData = { 'form_email': '12345678@qq.com', 'form_password': '12345678aa', 'captcha-solution': captchaSolution, 'captcha-id': captchaId, 'redir': redirectUrl }else: # 如果没有验证码 postData = { 'form_email': '12345678@qq.com', 'form_password': '12345678aa', 'redir': redirectUrl }print 'postData ===========>>>> ' + str(postData)data = urllib.urlencode(postData)response2 = opener.open(loginUrl, data)print '正在登录。。。。。。。。。。。。。'soup2 = BeautifulSoup(response2.read(), 'lxml')# print soup2.prettify()if u'登录豆瓣' == soup2.title.string: print '登录失败'else: print '登录成功'
阅读全文
0 0
- python模拟登陆豆瓣网和验证码识别
- scrapy框架半自动处理验证码豆瓣网模拟登陆
- python 模拟登陆豆瓣
- python模拟登陆知乎(手工识别验证码)
- Python爬虫模拟登陆豆瓣
- 【Python】【验证码识别】python 模拟登陆时,验证码自动识别问题
- C# 模拟登陆、识别验证码
- 【Python模拟登录】py2模拟登陆CSDN(人工识别验证码)
- Python爬虫笔记-豆瓣模拟登陆
- 模拟登陆豆瓣,发帖和回复code
- 【Python模拟登录与验证码识别】
- CMCC-EDU 模拟登陆中的验证码识别
- java selenium tess4j识别验证码模拟登陆。
- 豆瓣模拟登陆
- HttpClient 模拟登录豆瓣网(有验证码)
- python 爬虫登陆学校教务系统之验证码识别
- python urllib2 cookielib处理验证码模拟人人登陆
- python requests模拟登陆带验证码的网站
- Tensorflow导入报"Failed to load the native TensorFlow runtime."解决方案
- Kaggle-Titanic一个完整的例子
- zookeeper集群
- POJ-3264 Balanced Lineup(rmq模板题)
- MATLAB基础
- python模拟登陆豆瓣网和验证码识别
- Linux命令集锦(Ubuntu)
- xampp版本和具体的php,mysql版本的对应
- mysql基准测试-sysbench
- 【学习】springmvc之@RequestMapping映射请求
- 推荐一些经过实践检验的学习方法
- 属性(4)
- CCF 201312-1出现次数最多的数
- vue 星空背景图 组件