代码如下:
import time
import ddddocr
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
# 打开google浏览器
option = webdriver.ChromeOptions()
option.add_argument(
"--user-data-dir=C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\crawl\\Default") # 浏览器存储用户配置文件的目录。
option.add_argument("--profile-directory=Default") # 选择要与启动的浏览器关联的配置文件目录
# 反反爬配置
option.add_argument("--disable-blink-features=AutomationControlled") # 禁用blink特征
option.add_experimental_option('excludeSwitches', ['enable-automation'])
# 开始获取cookie
browser = webdriver.Chrome(options=option)
browser.get("https://adv.aiclk.com/#/index/login~force=1")
time.sleep(10)
# 我们就一个账户, 所以在这里写死用户名和密码
user_name = 'user_name'
password = 'password'
try:
browser.find_element(By.XPATH, "//input[@id='ctrltextusername']").click()
browser.find_element(By.XPATH, "//input[@id='ctrltextusername']").clear()
browser.find_element(By.XPATH, "//input[@id='ctrltextusername']").send_keys(user_name)
time.sleep(2)
browser.find_element(By.XPATH, "//input[@id='ctrltextpassword']").click()
browser.find_element(By.XPATH, "//input[@id='ctrltextpassword']").clear()
browser.find_element(By.XPATH, "//input[@id='ctrltextpassword']").send_keys(password)
time.sleep(3)
# 获取src
code_image = browser.find_element(By.XPATH, "//img[@id='code_image']")
url = code_image.get_attribute('src')
# 下载
r = requests.get(url)
# 识别验证码
ocr = ddddocr.DdddOcr()
res = ocr.classification(r.content)
print(res)
browser.find_element(By.XPATH, "//input[@id='ctrltextcode']").send_keys(res)
browser.find_element(By.XPATH, "//div[@id='ctrlbuttonsubmit']").click()
time.sleep(10)
cookie = ""
for item in browser.get_cookies():
cookie += item["name"] + "=" + item["value"] + ";"
print(cookie)
# 把拿到的cookie放在txt里, 之后爬取数据先拿这里的cookie, 如果过期了再来重新获取
with open('C:\\Users\\Administrator\\Desktop\\quick_report_crawl\\xxx.txt', 'w') as f:
f.write(cookie)
except Exception as e:
print('广点通用户登录失败, 失败原因是: ', e)
# 至此cookie就拿到啦, 后面就是正常的业务代码
一点说明:
安利个巨好用的识别验证码的库<ddddocr> gitHub:https://github.com/sml2h3/ddddocr
可能会在版本上遇到问题,我的报错参考这篇文档解决:https://blog.csdn.net/zhuchengchengct/article/details/124854199
我用的版本作为参考:python是3.9.13,ddddocr是1.4.2文章来源:https://www.toymoban.com/news/detail-589239.html
如有问题,欢迎大家批评指正~~文章来源地址https://www.toymoban.com/news/detail-589239.html
到了这里,关于爬虫笔记--Selenium实现有验证码网站模拟登录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!