使用selenium登录古诗文网,包含验证码识别。

登录古诗文网

import time
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from PIL import Image
from js_test.tool.chaojiying import Chaojiying_Client


options = ChromeOptions()
# 指定chrome data路径,已添加cookies访问。
# options.add_argument(r"user-data-dir=C:\Users\Ray R He\AppData\Local\Google\Chrome\User Data")
options.add_argument("start-maximized")
browser = webdriver.Chrome(executable_path=r"C:\Users\Ray R He\Desktop\chromedriver.exe", options=options)
print(browser.title)
 # 通过该函数在文档加载前注入一段js代码以消去webdriver值。 window.navigator.webdriver设置为undefined或者false
script = '''
Object.defineProperty(navigator, 'webdriver', {
    get: () => false
})
'''
browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": script})

browser.get("https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx")
time.sleep(2)
browser.save_screenshot("./古诗文.png")  # 截图
code_img_ele = browser.find_element_by_xpath('//*[@id="imgCode"]')
location = code_img_ele.location  # 获取元素左上角的坐标X,Y
print('Location:', location)
size = code_img_ele.size  # 获取元素的长和宽
print('size:', size)
rangle = (
    location['x'], location['y'], location['x'] + size['width'], location['y'] + size['height']
)  # 验证码的四个坐标点
i = Image.open("./古诗文.png")
frame = i.crop(rangle)  # 按坐标截图
frame.save('./code_img.png')
chaojiying = Chaojiying_Client('hehaha', 'h672049506', '920530')  # 验证码识别
im = open(r'./code_img.png', 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
imgcode = chaojiying.PostPic(im, 1902)['pic_str']  # 1902 验证码类型  官方网站>>价格体系 3.4+版 print 后要加()
print(imgcode)
browser.find_element_by_xpath('//*[@id="email"]').send_keys('17726465606')
browser.find_element_by_xpath('//*[@id="pwd"]').send_keys('h672049506')
time.sleep(1)
browser.find_element_by_xpath('//*[@id="code"]').send_keys(imgcode)
time.sleep(1)
browser.find_element_by_xpath('//*[@id="denglu"]').click()

 

上一篇:Selenium 使用手册


下一篇:可见即可爬:Selenium