0


爬虫笔记--Selenium实现有验证码网站模拟登录

代码如下:

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就拿到啦, 后面就是正常的业务代码

一点说明:

如有问题,欢迎大家批评指正~~

标签: python selenium

本文转载自: https://blog.csdn.net/Clever1996/article/details/129129343
版权归原作者 Clever1996 所有, 如有侵权,请联系我们删除。

“爬虫笔记--Selenium实现有验证码网站模拟登录”的评论:

还没有评论