python爬虫--模拟12306登录
模拟12306登录
爬虫程序:
from selenium import webdriver
from selenium.webdriver import ActionChains
from time import sleep
from PIL import Image #安装PIL或者是Pillow
from CJY import Chaojiying_Client
#封装一个识别验证码的函数
def transformCode(imgPath,imgType):
chaojiying = Chaojiying_Client('超级鹰用户名', '超级鹰密码', '899370')
im = open(imgPath, 'rb').read()
return chaojiying.PostPic(im, imgType)['pic_str']
#将当前浏览器页面进行图片保存
bro.save_screenshot('./main.png')
#将验证码的局部区域进行裁剪
#捕获标签在页面中的位置信息
img_tag = bro.find_element_by_xpath('//*[@id="loginForm"]/div/ul[2]/li[4]/div/div/div[3]/img')
location = img_tag.location#标签的起始位置坐标(左下角坐标)
size = img_tag.size#标签的尺寸
#裁剪范围对应的矩形区域
rangle = (int(location['x']),int(location['y']),int(location['x']+size['width']),int(location['y']+size['height']))
#使用Image工具进行指定区域的裁剪
i = Image.open('./main.png')
frame = i.crop(rangle)#crop就是根据指定的裁剪范围进行图片的截取
frame.save('code.png')
#调用打码平台进行验证码的识别
result = transformCode('./code.png',9004)
all_list = []#[[x1,y1],[x2,y2],[x3,y3]] 验证码中图片中的点击内容的坐标
bro.find_element_by_id('username').send_keys('xxxxxx') #12306用户名
sleep(1)
bro.find_element_by_id('password').send_keys('xxxx') #密码
sleep(1)
bro.find_element_by_id('loginSub').click() #点击事件,登录
sleep(10)
print(bro.page_source)
bro.quit()
全部代码在公众中回复12306

更多精彩