Python scrapy 爬虫入门(六)模拟登录

1 构造登录请求

构造一个登录请求,将用户登录的信息作为参数一起传递给网站服务器。但是如果登录时有验证码,这种方法就不行了。

1.1 实现

Python scrapy 爬虫入门(六)模拟登录_第1张图片
data 里面的数据是登录时提交的表单数据,可以在“开发者工具”中查看。
parse 里面处理登录是否成功的逻辑。如果登录成功,就由 parse_doulist 处理接下来的爬取数据的逻辑。
parse_doulist 处理爬取数据的逻辑,和其他爬虫逻辑一样

2 验证码识别

2.1 使用OCR识别验证码(简单的)

2.1.1 OCR环境构建

Tesseract OCR的下载和安装:下载地址为http://digi.bib.uni-mannheim.de/tesseract。下载后按照提示安装即可。
安装Python支持的OCR库:
Python中想要调用Tesseract的OCR引擎,需要安装两个库,一是pytesseract,它是Tesseract的识别库;二是Pillow,它是著名的Python图形处理库PIL(Python Image Library)的分支版本,包含了很多用于处理验证码图像的高级方法,并且还是pytesseract的依赖库。

pip install pillow
pip install pytesseract

关联tesseract OCR:
安装完pytesseract后,需要关联Tesseract OCR。打开pytesseract.py源文件(一般在python 目录下),找到代码:tesseract_cmd = ‘tesseract’, 将tesseract_cmd指向到Tesseract-OCR的tesseract.exe

tesseract_cmd = 'XXX/tesseract.exe'

2.1.2 OCR识别图片

图片为:
Python scrapy 爬虫入门(六)模拟登录_第2张图片
处理代码为:
Python scrapy 爬虫入门(六)模拟登录_第3张图片
首先导入Pillow的Image类,它提供了许多用于处理验证码图像的高级方法。导入的pytesseract用于实现文本抽取的功能;接着使用了Image类的方法实现了对图像的处理,有:

  • open:打开图像。
  • convert:转换图像模式。可以设置9种不同的模式,分别是:1、L、P、RGB、RGBA、CMYK、YCbCr、I和F。其中,L表示灰色图像,可以设置0~255之间的值,0表示黑,255表示白,其他数字表示不同的灰度;1表示二值图像,非黑即白。以上代码中实现了将图像转换为灰度图像的过程。
  • save:保存为新图像。
  • point:像素操作。point方法会遍历图像中的每个像素,每个像素交给lamada表达式处理,所有阈值小于1的像素都设为0,其余都设为255,这样,只有全黑的像素才会保留下来。point的另外一个参数1表示图像将会转换为二值图像模式

2.2 处理复杂验证码

为了处理这些更加复杂的验证码,可以考虑求助于第三方打码平台

3 Cookie自动登录

复杂的验证码,爬虫处理不了,可以使用 coolie

3.1 实例

下载相关库:

pip install browsercookie
pip install pycryptodome

其他过程与普通爬虫类似,修改爬虫类部分内容为:
Python scrapy 爬虫入门(六)模拟登录_第4张图片
在构造函数__init__()中,首先,调用browsercookie的chrome()方法,获取Chrome浏览器的所有Cookie数据;然后,定义一个字典属性cookie_dict,用于保存Cookie值;最后,遍历Chrome中所有的Cookie,只有域名为.qidian.com并且key的值为"_csrfToken"、“e1”、“e2”、“newstatisticUUID”、"ywguid"和"ywkey"的才是符合要求的数据,将它们保存于字典属性cookie_dict中。在初始请求函数start_requests()中,Request中增加了参数cookies,其值为属性cookie_dict。这样,Cookie数据就随HTTP请求一起发送给网站服务器,网站服务器根据得到的Cookie识别用户,作为请求的响应,将数据发送回来。
获取cookie 的key 值,可以通过“开发者工具”查看,获取数据后解析数据与普通爬虫一样。

文章内容参考《从零开始学scrapy 网络爬虫》

你可能感兴趣的:(爬虫)