【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 ...
随机推荐
- 多么痛的领悟---关于RMB数据类型导致的元转分分转元的bug
关于金额的数据类型,以及元转分分转元之间这种转换,以及元和分的比较,我相信很多人都踩过坑. 反正我是踩过. 而且,昨天和今天又重重的踩了两脚. 代付查询接口,支付中心给溢+响应的报文里,amount的 ...
- ajax提交完表单数据依然跳转的解决办法
1. 既然ajax提交数据,就把表单里面submit按钮换掉,因为触发submit他就会跳转页面 提交的时候他会先触发ajax 再触发submit的提交 2.如果确定了表单没有submit,那么把提交 ...
- 第二章 CSS基本属性
1.CSS:层叠样式表 一个元素允许同时应用多种样式,页面元素最终的样式即为多种样式的叠加效果. 2.CSS样式优先级 行内样式表>内部样式表>外部样式表[就近原则] id选择器>类 ...
- WebApi关于配置全局返回Json数据格式时间以及命名小写
1.直接在Global文件中配置: 1 var formatters = GlobalConfiguration.Configuration.Formatters; 2 var jsonFormatt ...
- C#6.0中10大新特性的应用和总结
微软发布C#6.0.VS2015等系列产品也有一段时间了,但是网上的教程却不多,这里真对C#6.0给大家做了一些示例,分享给大家. 微软于2015年7月21日发布了Visual Studio 20 ...
- git server 配置
因为后面要采用Git代替Subversion,花了点时间配置了Git服务端和客户端,像以前一样,仍然基于最新的Ubuntu11.10 server/desktop系统. 感谢这几篇文章的作者: htt ...
- html5-div布局
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- Sitecore 9有什么新功能
在这个新版本中有很多值得爱的东西.每个人都会有自己喜欢的新功能,但是,我想与你分享一些地雷: xConnect 正如我们在Sitecore的官方Sitecore 9新闻稿中所见的那样,“新的xConn ...
- Abandoned country(最小生成树+树形DP)
#include<bits/stdc++.h> using namespace std; struct node{ int u, v, w, nex; bool gone; node(){ ...
- 直流-直流(DC-DC)变换电路_BUCK&BOOST变换电路
1. 直流—直流变换器通过对电力电子器件的通断控制,将直流电压断续地加到负载上,通过改变占空比改变输出电压平均值. BUCK线路原理图如上,其中Q管/MOS作为开关管,驱动电压一般为PWM. 当开关管 ...