Python Scrapy 验证码登录处理
一、Form表单分析
以豆瓣登录页面为例分析,豆瓣登录页是:https://accounts.douban.com/login,浏览器打开之后查看源码,查找登录的form表单HTML结构。如下:

包括了form_email、form_password、captcha-solution四个表单参数,需要注意之处是name,而不是id。
二、验证码图片处理
1、分析验证码参数图片的构建如下图,获取id为captcha_image的src图片即可。可以采用人工输入,或第三方图片验证码识别API获得。

2、点击该url,图片是:

获取url之后,使用urllib.request.urlretrieve(url,filename="d:/captcha.jpg")下载图片
3、接下来通过python脚本获取该图片,保存在本地,在python命令行中采用input()方式,人工识别后输入该验证码:captcha_value = credit。
三、登录参数构建
通过预先注册的用户名、密码,获得验证码,构建表单参数如下:
data={
"form_email":"XXXXX",
"form_password":"******",
"captcha-solution":captcha_value,
}
四、Session参数存储
1、cookiejar学习:http://cuiqingcai.com/968.html
2、在request参数中指定cookiejar,如下:
首次访问目标网站:

构建登录参数后,开始登录。

五、登录后数据爬取
通过formdata认证通过后,在回调函数crawlerdata中处理爬取的网页,通过response对象进行数据解析。

六、主要代码
import scrapy
from scrapy.http import Request,FormRequest
import urllib.request
class DoubanSpider(scrapy.Spider):
name = "Douban"
allowed_domains = ["douban.com"] UserAgent = {"User-Agent:":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2050.400 QQBrowser/9.5.10169.400"} def start_requests(self):
return [Request("https://accounts.douban.com/login",callback=self.Login,meta={"cookiejar":1})] def Login(self, response):
captcha = response.xpath("//img[@id='captcha_image']/@src").extract()
url = "https://accounts.douban.com/login"
print("正在保存验证码图片")
captchapicfile = "F:/20_Python/2000_PythonData/SelfStudy/douban/douban/captcha.png"
urllib.request.urlretrieve(captcha[0],filename = captchapicfile)
print("打开图片文件,查看验证码,输入单词......")
captcha_value = input() data = {
"form_email":"XXXX",
"form_password":"XXXX",
"captcha-solution":captcha_value,
}
print("正在登陆中……")
return [FormRequest.from_response(response,
meta={"cookiejar":response.meta["cookiejar"]},
headers = self.UserAgent,
formdata = data,
callback=self.crawlerdata,
)] def crawlerdata(self,response):
print("完成登录.........")
title = response.xpath("/html/head/title/text()").extract()
content2 = response.xpath("//meta[@name='description']/@content").extract()
print(title[0])
print(content2[0])
Python Scrapy 验证码登录处理的更多相关文章
- scrapy爬取验证码登录网页
scrapy 验证码登录程序, https://accounts.douban.com/login # -*- coding: utf-8 -*- import scrapy import urlli ...
- python爬虫之scrapy模拟登录
背景: 初来乍到的pythoner,刚开始的时候觉得所有的网站无非就是分析HTML.json数据,但是忽略了很多的一个问题,有很多的网站为了反爬虫,除了需要高可用代理IP地址池外,还需要登录.例如知乎 ...
- python爬虫scrapy之登录知乎
下面我们看看用scrapy模拟登录的基本写法: 注意:我们经常调试代码的时候基本都用chrome浏览器,但是我就因为用了谷歌浏览器(它总是登录的时候不提示我用验证码,误导我以为登录时不需要验证码,其实 ...
- Python - WebDriver 识别登录验证码
Python - WebDriver 识别登录验证码 没什么可说的直接上代码! #-*-coding:utf-8-*- # Time:2017/9/29 7:16 # Author:YangYangJ ...
- Python 实现简单图片验证码登录
朋友说公司要在测试环境做接口测试,登录时需要传入正确的图片的验证码,本着懒省事的原则,推荐他把测试环境的图片验证码写死,我们公司也是这么做的^_^.劝说无果/(ㄒoㄒ)/~~,只能通过 OCR 技术来 ...
- python接口自动化(Cookie_绕过验证码登录)
python接口自动化(Cookie_绕过验证码登录) 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以 ...
- python自动化实现验证码登录过程
(自动化实现验证码登录,这里内容是入坑后,整合了几个文档的内容)|以下模块是使用时需要用到的首先:安装pillow库,它的作用是对图片进行简单的处理,在pytharm中使用pip install pi ...
- Python验证码登录(Tesseract安装配置)
1.安装py库:pytesseract,PIL pip install pytesseract pip install PILLOW 如果安装时,出现权限不足: pip install --user ...
- python scrapy版 极客学院爬虫V2
python scrapy版 极客学院爬虫V2 1 基本技术 使用scrapy 2 这个爬虫的难点是 Request中的headers和cookies 尝试过好多次才成功(模拟登录),否则只能抓免费课 ...
随机推荐
- TFS2013以独占的方式签出
- C#获取显示器屏幕数量 控制winform显示到哪一个屏幕
获取当前系统连接的屏幕数量: Screen.AllScreens.Count();获取当前屏幕的名称:string CurrentScreenName = Screen.FromControl(thi ...
- Lintcode---克隆二叉树
深度复制一个二叉树. 给定一个二叉树,返回一个他的 克隆品 . 您在真实的面试中是否遇到过这个题? Yes 样例 给定一个二叉树: 1 / \ 2 3 / \ 4 5 返回其相同结构相同数值的克隆二叉 ...
- 常用的SQL
--时间计算: select GETDATE() ,GETDATE()) ,GETDATE()) ,GETDATE()) ,GETDATE()) ,GETDATE()) ,GETDATE()) --查 ...
- Hadoop知识汇总
Hadoop的两大功能:海量数据存储和海量数据分析 Hadoop2的三大核心组件是:HDFS.MapperReducer和yarn 1.HDFS:分布式文件系统海量数据存储 2.MapperReduc ...
- 【iOS开发之Objective-C】书签管理器项目
1.项目 新建一个书签管理器的项目,能够存储书签的网址.中文名.星级.訪问量和权限信息.具有增.删.改.查和排序的功能. 2.找对象,抽象类 书签管理器,书签管理器.书签管理器-- 多读几次书是不是 ...
- 用C语言(apue)实现 把时间戳转换为国标格式的字符串(2017-07-17 22:36:12)的函数
/*******************************************************************************/ /** *** 函 数 名: cha ...
- 从零开始,跟我一起做jblog项目(一)引言
从零开始,跟我一起做jblog项目(一)引言 想做一个java版的blog,源自一个很久之前的想法 当时刚学习JAVA的web编程 想买自己的域名,自己的VPS,安装自己的WEB服务 用google ...
- python学习笔记(8)--爬虫下载占位图片
说明: 1. 虽然很简单,但总忘,所以还是记下来吧! 2. http://placekitten.com/300/300这个画猫的网站老是打开没有图片,改成了http://placehold.it/3 ...
- 使用burpsuite来扫描漏洞
一张图说明全文.