技术实现
使用selenium和超级鹰实现12306自动化登录
难点
1.规避检测
from selenium.webdriver.chrome.options import Options
a = Options()
a.add_experimental_option("excludeSwitches", ["enable-automation"])
a.add_argument("--disable-blink-features=AutomationControlled")
with open('./stealth.min.js') as f:
js=f.read()
1.验证码识别与处理
bro.get('https://kyfw.12306.cn/otn/resources/login.html')
div=bro.find_element_by_class_name('login-hd-account')
sleep(2)
div.click()
bro.maximize_window()#对整个屏幕进行截图
bro.save_screenshot('a.png')
#获取整个屏幕中验证码部分的图片
code_img_link=bro.find_element_by_xpath('//*[@id="J-loginImg"]')
code_location=code_img_link.location#验证码左上角的坐标
print(code_location)
code_size=code_img_link.size#验证码长和宽
print(code_size)
range_=(code_location['x'],code_location['y'],int(code_location['x']+code_size['width']),int(code_location['y']+code_size['height']))
img_total=Image.open('./a.png') #打开将要处理的图片
code_img='./code.png'
frame=img_total.crop(range_)#处理截取到的图片
frame.save(code_img)
爬虫:12306自动化登录