scrapy - 保存输入处理登录图片验证码
# scrapy - 保存输入处理登录图片验证码
在使用 scrapy
爬虫进行爬取网站的时候会遇到登录验证码的问题,这里我们使用 PIL
库来保存验证码。
# 安装 PIL
库
pip install Pillow
1
# 使用方法
import scrapy
from PIL import Image
import io
class Demo(scrapy.Spider):
def parse(self, response):
# 获取验证码的图片地址
imgurl = response.css('#vcode_img::attr(src)').get()
if imgurl is not None:
print("验证码地址:" + imgurl)
# 将地址加入下一个请求
captUrl = response.urljoin(imgurl)
# 请求验证码,带上当前的响应response
yield scrapy.Request(captUrl, callback=self.login, meta={'login_response':response}, dont_filter=True)
# 输入验证码并登陆
def login(self,response):
login_response = response.meta.get('login_response')
# 获取验证码
img = Image.open(io.BytesIO( response.body ))
# 显示验证码
img.show()
# 获取输入的值
capt_value = input("请输入验证码->")
# 登录请求
yield scrapy.FormRequest.from_response(login_response, url="http://localhost/login/ajax_login", formdata={ "user_name":"123456", "admin":"123456", "checkcode": capt_value }, callback=self.after_login)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
上次更新: 2024/01/29, 14:48:38