Instale o ambiente de automação python no sistema Debian

Para usar a automação do Chrome no Debian, você precisa do Selenium WebDriver. O Selenium WebDriver é uma ferramenta para testes automatizados de navegadores, que pode simular ações do usuário no navegador, como clicar, digitar, rolar, etc. Aqui estão as etapas para automatizar com o Chrome no Debian:

Instalar

  1. Instale o navegador Chrome e o ChromeDriver. Você pode instalá-los com os seguintes comandos:
sudo apt-get update
sudo apt-get install chromium-browser chromium-chromedriver
  1. Instale o Selenium WebDriver. Você pode instalá-lo com o seguinte comando:
pip install selenium

Escrever código

  1. Escreva scripts Python para automatizar o navegador Chrome. Aqui está um script de exemplo simples:
from selenium import webdriver

# 创建 Chrome 浏览器实例
options = webdriver.ChromeOptions()
options.add_argument('--headless')  # 无头模式
driver = webdriver.Chrome(options=options)

# 打开网页
driver.get('https://www.google.com')

# 在搜索框中输入关键字
search_box = driver.find_element_by_name('q')
search_box.send_keys('Python')

# 点击搜索按钮
search_button = driver.find_element_by_name('btnK')
search_button.click()

# 关闭浏览器
driver.quit()

O script acima abrirá o navegador Chrome, vá para a página de pesquisa do Google, digite a palavra-chave "Python" e clique no botão de pesquisa. Você pode modificar o script de acordo com suas necessidades.

Observação: ao usar a automação do Chrome, é recomendável usar o modo sem cabeça (modo sem cabeça), que pode economizar recursos e melhorar a eficiência. --headlessVocê pode ativar o modo headless adicionando o parâmetro ao criar uma instância do navegador Chrome .

pesquisa de elemento

Sim, o Selenium WebDriver também fornece muitas outras maneiras de encontrar elementos, como:

  • find_element_by_id: encontre um elemento por seu atributo id.
  • find_element_by_class_name: encontre um elemento por seu atributo de classe.
  • find_element_by_css_selector: Encontre o elemento pelo seletor de CSS.
  • find_element_by_xpath: Localiza um elemento por uma expressão XPath.
  • find_element_by_link_text: encontre elementos de link por texto de link.
  • find_element_by_partial_link_text: encontre elementos de link por parte do texto do link.

Qualquer um desses métodos pode ser usado para localizar elementos, e qual método usar depende de suas necessidades e da estrutura HTML da página. Se você não tiver certeza de qual método usar, poderá consultar o código-fonte HTML da página, localizar o atributo e o valor do elemento que está procurando e usar o método apropriado para localizá-lo.

exemplo

Ok, darei alguns exemplos de como encontrar elementos usando o Selenium WebDriver.

  1. Encontre um elemento por seu atributo id

Suponha que queremos encontrar uma caixa de entrada com o id "search" na página da web, podemos usar o seguinte código:

search_box = driver.find_element_by_id('search')
  1. Encontre elementos por seu atributo de classe

Suponha que queremos encontrar um botão com a classe "btn-primary" na página da web, podemos usar o seguinte código:

button = driver.find_element_by_class_name('btn-primary')
  1. Encontre elementos por seletores CSS

Suponha que queremos encontrar uma caixa de entrada com a classe "search" na página da web, podemos usar o seguinte código:

search_box = driver.find_element_by_css_selector('.search')
  1. Localizar elementos por expressão XPath

Suponha que queremos encontrar um link com o texto "Entrar" na página da web, podemos usar o seguinte código:

link = driver.find_element_by_xpath('//a[text()="Sign in"]')
  1. Localizar elementos de link por texto de link

Suponha que queremos encontrar um link com o texto do link "Saiba mais" na página da web, podemos usar o seguinte código:

link = driver.find_element_by_link_text('Learn more')
  1. Encontre elementos de link por parte do texto do link

Suponha que queremos encontrar um link em uma página da Web cujo texto do link contenha "Aprenda", podemos usar o seguinte código:

link = driver.find_element_by_partial_link_text('Learn')

Esses são métodos comuns e você pode escolher o método apropriado para localizar elementos com base em suas necessidades e na estrutura HTML da página.

combate

Quando se trata de automatizar operações, aqui estão alguns exemplos clássicos:

  1. Teste automatizado de páginas da Web: o teste automatizado é uma parte essencial do desenvolvimento de software. Ao usar ferramentas de teste automatizadas, você pode reduzir o tempo de teste e os custos de teste e melhorar a precisão do teste. O Selenium WebDriver é uma ferramenta popular de teste automatizado que pode ser usada para testar aplicativos da web.

  2. Raspagem de dados: a raspagem de dados é um dos casos de uso mais comuns em operações de automação. Usando bibliotecas de rastreamento Python, como BeautifulSoup e Scrapy, você pode coletar dados automaticamente de sites e salvá-los em arquivos ou bancos de dados locais.

  3. Implantação automatizada: a implantação automatizada pode simplificar muito o processo de implantação de software e reduzir o risco de erro humano. Usando ferramentas como Ansible, Chef ou Puppet, o software pode ser implantado e os servidores provisionados automaticamente.

  4. Construindo um ambiente de teste automatizado: No desenvolvimento de software, muitas vezes é necessário criar um ambiente de teste. Use ferramentas automatizadas para criar rapidamente ambientes de teste para teste e depuração.

  5. Escritório automatizado: Usando scripts Python, algumas tarefas repetitivas do escritório podem ser automatizadas, como envio automático de e-mail, backup automático de dados, preenchimento automático de formulários, etc.

Esses casos são apenas algumas das operações automatizadas, existem muitos outros casos de uso, como robótica automatizada, fabricação automatizada etc.

Claro, alguns códigos de caso podem ser fornecidos. A seguir estão alguns exemplos de código Python de operações de automação comuns:

  1. Teste de automação de página da Web:
from selenium import webdriver

# 创建一个 Chrome 浏览器实例
browser = webdriver.Chrome()

# 打开一个网页
browser.get('https://www.baidu.com')

# 查找页面上的元素并操作
search_input = browser.find_element_by_id('kw')
search_input.send_keys('Python')
search_button = browser.find_element_by_id('su')
search_button.click()

# 关闭浏览器
browser.quit()
  1. Captura de dados:
import requests
from bs4 import BeautifulSoup

# 发送 GET 请求并获取 HTML 页面
response = requests.get('https://www.baidu.com')
html = response.text

# 使用 BeautifulSoup 解析 HTML 页面
soup = BeautifulSoup(html, 'html.parser')

# 查找页面上的元素并提取数据
title = soup.find('title').get_text()
print(title)
  1. Implantação automatizada:
import paramiko

# 创建 SSH 客户端实例
ssh_client = paramiko.SSHClient()

# 设置 SSH 客户端连接选项
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接到远程服务器
ssh_client.connect('example.com', username='user', password='password')

# 执行远程命令
stdin, stdout, stderr = ssh_client.exec_command('ls')

# 输出命令执行结果
for line in stdout:
    print(line.strip())

# 关闭 SSH 连接
ssh_client.close()

Esses exemplos de código são apenas para demonstrar a ideia básica da operação automática e precisam ser modificados e otimizados de acordo com os requisitos específicos da aplicação real.

O Python efetua login automaticamente na caixa de correio Qq

Para realizar o login automático do Python em caixas de correio com códigos de verificação, bibliotecas e módulos de terceiros precisam ser usados. Entre eles, o selênio é uma ferramenta de teste automatizada de Python comumente usada, que pode simular a operação do usuário no navegador, incluindo a inserção de informações como nome de usuário, senha e código de verificação.

Veja a seguir um exemplo de código que usa o Selenium para efetuar login automaticamente em uma caixa de correio com um código de verificação:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# 创建 Chrome 浏览器实例
driver = webdriver.Chrome()

# 打开邮箱登录页面
driver.get('https://mail.qq.com/')

# 等待页面加载完成
time.sleep(3)

# 切换到登录 iframe
driver.switch_to.frame('login_frame')

# 输入用户名和密码
username = driver.find_element_by_name('u')
username.send_keys('your_username')
password = driver.find_element_by_name('p')
password.send_keys('your_password')

# 等待验证码出现,并手动输入验证码
time.sleep(10)

# 点击登录按钮
submit = driver.find_element_by_id('login_button')
submit.click()

# 等待页面跳转
time.sleep(3)

# 关闭浏览器
driver.quit()

Neste exemplo, primeiro criamos uma instância do navegador Chrome e, em seguida, abrimos a página de login da caixa de correio QQ. Como a página de login da caixa de correio QQ usa um iframe, precisamos switch_to.frame()alternar para o iframe de login por meio do método. Em seguida, usamos find_element_by_name()o método para encontrar as caixas de entrada de nome de usuário e senha e enviar a elas o nome de usuário e a senha correspondentes. Em seguida, inserimos manualmente o código de verificação e aguardamos um pouco, aguardando o carregamento da página. Por fim, clicamos no botão de login e esperamos que a página pule. Após o login, podemos driver.quit()fechar o navegador com o método.

Vale ressaltar que a identificação do código de verificação precisa ser feita manualmente, pois a forma e a complexidade do código de verificação são diferentes, não podendo ser utilizado um método de identificação geral. Além disso, este código de amostra é apenas para referência e a implementação específica pode variar dependendo do tipo de caixa de correio e da forma do código de verificação.

Problema de Captcha

Se o captcha aparecer em uma janela oculta do WebDriver, considere os seguintes métodos para resolver esse problema:

  1. Maximize a janela do WebDriver para que você possa ver o captcha.

  2. Tente inserir o código de verificação simulando a entrada do teclado. Você pode usar a biblioteca pyautogui em Python para simular a entrada do teclado.

  3. Use a tecnologia OCR para identificar automaticamente o código de verificação. Você pode usar a biblioteca pytesseract em Python para a funcionalidade OCR.

Observe que há um certo risco ao inserir captchas automaticamente, pois os captchas são projetados para impedir ataques de bot. Se o seu programa automatizado for identificado como um robô, sua conta poderá ser banida. Portanto, ao usar programas automatizados, certifique-se de se comportar de acordo com os regulamentos do site e tente evitar o uso frequente de programas automatizados.

Método 1: maximizar a janela do WebDriver

Maximize a janela do WebDriver para que você possa ver o captcha e ocultá-lo após inserir o captcha
Você pode usar o seguinte código para maximizar a janela do WebDriver e minimizá-la após inserir o captcha:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

# 创建Chrome浏览器实例并最大化窗口
chrome_options = Options()
chrome_options.add_argument("--start-maximized")
driver = webdriver.Chrome(options=chrome_options)

# 打开登录页面,等待验证码出现
driver.get("https://example.com/login")
time.sleep(5)

# 输入用户名和密码
username_input = driver.find_element_by_id("username")
password_input = driver.find_element_by_id("password")
username_input.send_keys("your_username")
password_input.send_keys("your_password")

# 等待验证码出现,并手动输入验证码
# 获取键盘输入的验证码
verification_code = input("请输入验证码后按 Enter 键继续...:")

# 将验证码输入到 qq 邮箱验证码框
verification_code_input = driver.find_element_by_id("verification_code")
verification_code_input.send_keys(verification_code)


# 最小化窗口
driver.minimize_window()

No código acima, estamos usando --start-maximizedparâmetros para maximizar a janela do navegador Chrome. Após aguardar o aparecimento do código de verificação, o programa pausa a execução e solicita que o usuário digite manualmente o código de verificação. Depois que o usuário inserir o código de verificação, o programa minimizará automaticamente a janela do navegador Chrome.

Método 2: Use a biblioteca PyAutoGUI para simular a entrada do teclado

Sim, você pode usar a biblioteca PyAutoGUI para simular a entrada do teclado. PyAutoGUI é uma biblioteca Python que automatiza operações de mouse e teclado no Windows, macOS e Linux. Ele pode simular eventos de teclado e mouse, incluindo pressionamentos de teclas, liberações de teclas, cliques, arrastos e rolagens, entre outros.

A seguir está um exemplo de código que demonstra como simular a entrada do teclado usando a biblioteca PyAutoGUI:

import pyautogui

# 获取键盘输入的验证码
verification_code = input("请输入验证码:")

# 将验证码输入到 qq 邮箱验证码框
pyautogui.typewrite(verification_code)

Neste exemplo de código, usamos a função input() para obter o código de verificação digitado pelo teclado e atribuí-lo à variável Verify_code. Em seguida, usamos a função typewrite() do PyAutoGUI para enviar o código de verificação para a janela ativa no momento. A função typewrite() simulará um evento de tecla do teclado e inserirá o código de verificação caractere por caractere na janela ativa atual.

Observe que, ao simular a entrada do teclado usando a biblioteca PyAutoGUI, você precisa ter certeza de que a janela ativa atual é a que deseja digitar, caso contrário, você pode acidentalmente enviar a entrada do teclado para outras janelas.

Use a tecnologia OCR para identificar automaticamente os códigos de verificação

Sim, você pode usar a biblioteca pytesseract para reconhecimento automático de captchas. pytesseract é uma biblioteca Python baseada no mecanismo Tesseract OCR que pode ser usado para reconhecer vários tipos de imagens, incluindo captchas.

Para usar a biblioteca pytesseract, primeiro você precisa instalar o mecanismo Tesseract OCR. No Debian, você pode instalá-lo com:

sudo apt-get install tesseract-ocr

Após a conclusão da instalação, você pode usar o seguinte código para identificar o código de verificação:

import pytesseract
from PIL import Image

# 打开验证码图片
image = Image.open('captcha.png')

# 使用 pytesseract 识别验证码
code = pytesseract.image_to_string(image)

# 打印识别结果
print(code)

Neste exemplo, primeiro abrimos uma captcha.pngimagem captcha chamada usando a biblioteca PIL. Em seguida, usamos o método da biblioteca pytesseract image_to_string()para converter a imagem em uma string e armazená-la na variável code. Finalmente, imprimimos o resultado do reconhecimento.

Deve-se notar que o reconhecimento de captcha nem sempre é preciso, especialmente quando o captcha é complexo ou contém ruído. Portanto, você precisa ajustar o código de acordo com a situação real para melhorar a precisão do reconhecimento.

Acho que você gosta

Origin blog.csdn.net/gaoxiangfei/article/details/131321349
Recomendado
Clasificación