爬虫学习_自动填写验证码
介绍一哈
最近在跟着静觅大神。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。的书、博客学习爬虫,准备学学写写记录一下。希望可以跟各位互相学习一下(抱拳)
项目
在学习了tesseract识别验证码后,准备用selenium + tesserocr写个中国知网的自动填写验证码
网站地址: 点我点我.
页面如下:
第一步 打开网站
直接用selenium打开 不多说不多说
讲究一点 可以添加点响应时长 和 等待浏览器加载完毕的 设置
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('http://my.cnki.net/elibregister/commonRegister.aspx')
第二步 获取验证码图片
一开始的想法是 获取网页中验证码图片的地址 下载图片 再做验证码识别 然后再填入
在network中发现 CheckCode.aspx 就是验证码 那么我们就可以通过 [Request URL] 得到验证码图片地址(http://my.cnki.net/elibregister/CheckCode.aspx)
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
url = 'http://my.cnki.net/elibregister/CheckCode.aspx'
res = requests.get(url, headers=headers)
with open('./checkcode.png', 'wb') as f:
f.write(res.content)
好了! 我们现在已经获取到验证码存到本地了! 只要识别之后 填入就ok了!
但是突然想到 用selenium打开的页面中的验证码与我们自己通过url获取的验证码其实没有一毛钱关系!
当时 还在想 有啥方法 可以 让selenium打开的页面 与 requests请求获取的验证码在同一个Session下进行
反正就是挺憨憨的
第二步 获取验证码图片
没错!还是第二步。后来发现 selenium 获取验证码其实有简单粗暴的方法 就是直接截图 o(╥﹏╥)o
browser = webdriver.Chrome()
browser.get('http://my.cnki.net/elibregister/commonRegister.aspx')
browser.save_screenshot('./checkcode.png') # 保存整个网页
element = browser.find_element_by_xpath('/