【Python54.1--豆瓣登录】
1、模拟豆瓣登录
'''
|-- 代码解析:
|-- 1、登录必须具备的条件:url,cookie,fromData
fromData的参数如下:
source: index_nav
form_email: 1832785141@qq.com
form_password: wfq8319274129
captcha-solution: rough
captcha-id: K0dnHwvyM2evqk1Do8beSlpl:en
login:登录
拿到这些参数必须弄懂具体各个参数是什么含义:
form_email : 用户名
form_password : 密码
captcha-solution : 验证码图片的名字(如何确认:登录页面查看网页源代码搜索:captcha-solution;另外一种方法:登录页检查,用左上角箭头查看验证码框。得到以下的内容:)
<input type="text" autocomplete="off" class="inp" id="captcha_field" name="captcha-solution" tabindex="3" placeholder="验证码"/>
captcha-id : 验证码图片ID(如何确认:同captcha-solution方法一样)
|-- 2、由于存在验证码,所以data字典内分两部分写入,一部分写入验证码之前的字段:source,form_email,form_password。一部分等获取验证码后,在写入:
captcha-solution,captcha-id,login
|-- 3、用reponse接受请求
|-- 4、读取返回来的数据
|-- 5、获取验证码的地址(方法:登录页检查,用左上角的箭头点击验证码图片就可以得到地址,具体如下:)
<img id="captcha_image" src="https://www.douban.com/misc/captcha?id=XnfFdo9PtGEvzszCDcsba03p:en&size=s" alt="captcha" class="captcha_image" title="看不清楚?点图片可以换一个" style="cursor: pointer;">
具体代码用:re.search('<img id="captcha_image" src="(.+?)" alt="captcha" class="captcha_image"/>', html)
-- 这里需要注意的知识点:imgurl=re.search(), src="(.+?)"正则表达式
|-- 6、获取验证码的图片url:url = imgurl.group(1) 并把图片保存到目录下以便程序运行时输入具体的验证码:res = urllib.request.urlretrieve(url,'v.jpg')
|-- 7、获取验证码的ID(方法同第5步一样,具体如下:)
<input type="hidden" name="captcha-id" value="F3RK1x6AUPruX28jxjfSGfoI:en">
具体代码用: re.search('<input type="hidden" name="captcha-id" value="(.+?)"/>',html)
--同样需要注意的知识点:re.search,value="(.+?) 正则表达式
|-- 8、再次写入captcha-solution,captcha-id,login
|-- 9、再次用reponse读取返回的数据
|-- 10、做个检查点,判断返回的url是否是登录后的url
''' import re
import urllib.request
import urllib.parse
from http.cookiejar import CookieJar
import ssl
ssl._create_default_https_context = ssl._create_unverified_context #登录需要的参数
login_url = "https://www.douban.com/accounts/login"
cookie = CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor) data = {"form_email":"1832785141@qq.com",
"form_password":"wfq8319274129",
"source":"index_nav"} #request = urllib.request.Request(login_url,urllib.parse.urlencode(data).encode('utf-8'),method='POST')
reponse = opener.open(login_url,urllib.parse.urlencode(data).encode('UTF-8')) #验证成功跳转至登录页
if reponse.geturl() == login_url:
html = reponse.read().decode() #获取验证码图片地址
imgurl = re.search('<img id="captcha_image" src="(.+?)" alt="captcha" class="captcha_image"/>', html)
print("imgurl++",imgurl) if imgurl:
#group()返回组号匹配的所有字符串即:验证码图片的url
url = imgurl.group(1)
print("url--",url)
#将验证码图片保存至同目录下
res = urllib.request.urlretrieve(url,'v.jpg') #获取图片id:captcha-id
captcha = re.search('<input type="hidden" name="captcha-id" value="(.+?)"/>',html)
#print("captcha==",captcha) if captcha:
vcode = input('请输入验证码:')
data["captcha-solution"]=vcode
data["captcha-id"] = captcha.group(1)
data["login"] = "登录" #提交验证码
reponse =opener.open(login_url,urllib.parse.urlencode(data).encode('UTF-8')) #登录成功,跳转至首页
if reponse.geturl() == "https://www.douban.com/":
print("登录成功")
涉及到的知识点
1、https://www.cnblogs.com/tina-python/p/5508402.html
2、http://www.cnblogs.com/anni-qianqian/p/10019672.html (各类爬虫的实例!!!)
3、URLError错误解决方案:https://blog.csdn.net/sylmoon/article/details/78777770
【Python54.1--豆瓣登录】的更多相关文章
- python 模拟豆瓣登录(豆瓣6.0)
最近在学习python爬虫,看到网上有很多关于模拟豆瓣登录的例子,随意找了一个试了下,发现不能运行,对比了一下代码和豆瓣网站,发现原来是豆瓣网站做了修改,增加了反爬措施. 首先看下要模拟登录的网站: ...
- 第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码 打码接口文件 # -*- coding: cp936 -*- import sys import os ...
- Python爬虫(3)豆瓣登录
前面(1)(2)的内容已经足够爬虫如链家网之类的不需要登录可以直接获取数据的网站. 而要爬取社交网站比较鲜明的特点就是需要登录,否则很多东西都无法获取.经过测试发现,微博,知乎都不是很好登录,知乎有时 ...
- OAuth2.0_豆瓣登录_API错误返回码说明一览表[转]
转自: http://blog.unvs.cn/archives/douban-oauth-2.0-error_code.html 在遵循OAuth2.0协议,开始制作豆瓣过程中,经常会遇到以下两个错 ...
- 十四 web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
打码接口文件 # -*- coding: cp936 -*- import sys import os from ctypes import * # 下载接口放目录 http://www.yundam ...
- Python爬虫——爬豆瓣登录页面
直接上代码 import urllib.request import http.cookiejar from lxml import etree # from spiderImg import get ...
- scrapy Formrequest用法(豆瓣登录案例)
# -*- coding: utf-8 -*-import scrapyfrom scrapy.http import Request,FormRequest class DbSpider(scrap ...
- 进阶——scrapy登录豆瓣解决cookie传递问题并爬取用户参加过的同城活动©seven_clear
最近在用scrapy重写以前的爬虫,由于豆瓣的某些信息要登录后才有权限查看,故要实现登录功能.豆瓣登录偶尔需要输入验证码,这个在以前写的爬虫里解决了验证码的问题,所以只要搞清楚scrapy怎么提交表单 ...
- python爬虫+使用cookie登录豆瓣
2017-10-09 19:06:22 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言: 先获得cookie,然后自动登录豆瓣和新浪微博 系统环境: 64位win10系统,同时装pytho ...
随机推荐
- 实验long raw 和 blob两种数据类型遇到dblink的表现
首先long raw从Oracle 10g开始就不再被建议使用,建议用blob代替.同理,long建议用clob代替. 本文从运维角度实验long raw 和 blob两种数据类型在遇到dblink时 ...
- 用Sample Flex Viewer框架创建GeoWeb应用程序
ArcGIS FlexView 开发指南(中文) 在线预览:https://wenku.baidu.com/view/4c08cc78168884868762d616.html idea : http ...
- layui透明弹框
效果: layui.use('layer', function () { var layer = layui.layer; var str = '<div>'; str += '<d ...
- nodejs爬虫数据存入mysql
node爬虫主要用的是三个插件 request cheerio mysql 废话不多说直接上代码 const request=require("request") const ch ...
- QT 添加 lib库
扒自网友文章: 一.添加第三方的头文件 首先,添加头文件 #include "ControlCAN.h" 然后,再将这个头文件放到工程的目录下 二.添加.lib文件 首先,将.l ...
- C# 如何批量修改集合元素的属性值?
我们往往会遇到要批量修改集合中元素的值,最笨的办法就是foreach循环,但本文介绍几种优雅的方法. 首先,我们准备好元素类和初始集合: 下面就是几种方法,目前并没有对性能做进一步的测试,有兴趣的童鞋 ...
- Hbase java api
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_144export HADOOP_HOME=/home/hadoop/app/hadoop-2.4.1export ...
- mac快捷键留存查看
基本的快捷键 Command是Mac里最重要的修饰键,在大多数情况下相当于Windows下的Ctrl.所以以下最基本操作很好理解: Command-Z 撤销 Command-X 剪切 Command- ...
- CentOS下nginx+php的配置及nginx开机启动配置
关闭防火墙 (不然外链接是访问不了 apache) service iptables stop 关闭安全系统 SELinux( 不然报403 访问页面错误 ) 1.Nginx安装主要在于配置文件的修改 ...
- python遍历目录os.walk(''d:\\test2",topdown=False)
os.walk(top, topdown=True, onerror=None, followlinks=False)遍历目录,topdown=false表示先返回目录,后返回文件 参数说明: top ...