爬虫笔记--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是3.9.13,ddddocr是1.4.2

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scrapy是一个强大的Python爬虫框架,可以用于快速、高效地抓取网页数据。要实现智联招聘的手机验证码模拟登录,可以按照以下步骤进行: 1. 导入必要的库和模块: 在Scrapy项目中,首先需要导入必要的库和模块,例如`scrapy`、`selenium`、`time`等。 2. 创建Scrapy项目: 使用Scrapy命令行工具创建一个新的Scrapy项目,可以使用以下命令: ``` scrapy startproject zhaopin ``` 3. 创建爬虫: 在Scrapy项目中,使用命令行工具创建一个新的爬虫,可以使用以下命令: ``` scrapy genspider zhaopin_spider www.zhaopin.com ``` 4. 编写爬虫代码: 在生成的爬虫文件中,编写爬虫代码。首先需要设置起始URL和回调函数,在回调函数中编写解析页面和提取数据的逻辑。对于验证码模拟登录,可以使用`selenium`库来模拟浏览器行为,例如点击按钮、输入验证码等。 5. 配置中间件: 为了在Scrapy中使用`selenium`库,需要配置一个中间件来处理请求。可以创建一个自定义的中间件,在其中使用`selenium`来处理请求,并将结果返回给Scrapy。 6. 运行爬虫: 在Scrapy项目的根目录下,使用以下命令来运行爬虫: ``` scrapy crawl zhaopin_spider ``` 以上是实现智联招聘的手机验证码模拟登录的大致步骤。具体的实现细节可能会因网站的具体情况而有所不同。在实际操作中,还需要处理验证码的识别、登录状态的维持等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值