Instale el entorno de automatización de Python en el sistema Debian

Para usar la automatización de Chrome en Debian, necesita Selenium WebDriver. Selenium WebDriver es una herramienta para la prueba automatizada del navegador, que puede simular las acciones del usuario en el navegador, como hacer clic, escribir, desplazarse, etc. Estos son los pasos para automatizar con Chrome en Debian:

Instalar

  1. Instale el navegador Chrome y ChromeDriver. Puedes instalarlos con los siguientes comandos:
sudo apt-get update
sudo apt-get install chromium-browser chromium-chromedriver
  1. Instale Selenium WebDriver. Puedes instalarlo con el siguiente comando:
pip install selenium

Escribir código

  1. Escriba scripts de Python para automatizar el navegador Chrome. Aquí hay un script de ejemplo simple:
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()

La secuencia de comandos anterior abrirá el navegador Chrome, irá a la página de búsqueda de Google, ingresará la palabra clave "Python" y hará clic en el botón de búsqueda. Puede modificar el script según sus necesidades.

Nota: Al usar la automatización de Chrome, se recomienda usar el modo sin cabeza (modo sin cabeza), que puede ahorrar recursos y mejorar la eficiencia. --headlessPuede habilitar el modo sin interfaz agregando el parámetro al crear una instancia del navegador Chrome .

búsqueda de elementos

Sí, Selenium WebDriver también proporciona muchas otras formas de encontrar elementos, como:

  • find_element_by_id: Encuentra un elemento por su atributo id.
  • find_element_by_class_name: Encuentra un elemento por su atributo de clase.
  • find_element_by_css_selector: Buscar elemento por selector CSS.
  • find_element_by_xpath: busca un elemento mediante una expresión XPath.
  • find_element_by_link_text: busque elementos de enlace por texto de enlace.
  • find_element_by_partial_link_text: busque elementos de enlace por parte del texto del enlace.

Cualquiera de estos métodos se puede usar para buscar elementos, y el método que se use depende de sus necesidades y de la estructura HTML de la página. Si no está seguro de qué método utilizar, puede consultar el código fuente HTML de la página, encontrar el atributo y el valor del elemento que está buscando y utilizar el método apropiado para encontrarlo.

ejemplo

Ok, les daré algunos ejemplos de búsqueda de elementos usando Selenium WebDriver.

  1. Encuentra un elemento por su atributo id

Supongamos que queremos encontrar un cuadro de entrada con el id "buscar" en la página web, podemos usar el siguiente código:

search_box = driver.find_element_by_id('search')
  1. Encuentra elementos por su atributo de clase

Supongamos que queremos encontrar un botón con clase "btn-primary" en la página web, podemos usar el siguiente código:

button = driver.find_element_by_class_name('btn-primary')
  1. Buscar elementos por selectores CSS

Supongamos que queremos encontrar un cuadro de entrada con la clase "buscar" en la página web, podemos usar el siguiente código:

search_box = driver.find_element_by_css_selector('.search')
  1. Buscar elementos por expresión XPath

Supongamos que queremos encontrar un enlace con el texto "Iniciar sesión" en la página web, podemos usar el siguiente código:

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

Supongamos que queremos encontrar un enlace con el texto del enlace "Más información" en la página web, podemos usar el siguiente código:

link = driver.find_element_by_link_text('Learn more')
  1. Buscar elementos de enlace por parte del texto del enlace

Supongamos que queremos encontrar un enlace en una página web cuyo texto de enlace contiene "Aprender", podemos usar el siguiente código:

link = driver.find_element_by_partial_link_text('Learn')

Estos son métodos comunes y puede elegir el método apropiado para encontrar elementos según sus necesidades y la estructura HTML de la página.

combate

Cuando se trata de automatizar operaciones, estos son algunos ejemplos clásicos:

  1. Pruebas automatizadas de páginas web: Las pruebas automatizadas son una parte esencial del desarrollo de software. Mediante el uso de herramientas de prueba automatizadas, puede reducir el tiempo de prueba y los costos de prueba, y mejorar la precisión de la prueba. Selenium WebDriver es una popular herramienta de prueba automatizada que se puede usar para probar aplicaciones web.

  2. Raspado de datos: el raspado de datos es uno de los casos de uso más comunes en las operaciones de automatización. Mediante el uso de bibliotecas de rastreo de Python, como BeautifulSoup y Scrapy, puede extraer automáticamente datos de sitios web y guardarlos en archivos o bases de datos locales.

  3. Implementación automatizada: la implementación automatizada puede simplificar en gran medida el proceso de implementación de software y reducir el riesgo de error humano. Usando herramientas como Ansible, Chef o Puppet, el software se puede implementar y los servidores se pueden aprovisionar automáticamente.

  4. Creación de un entorno de prueba automatizado: en el desarrollo de software, a menudo es necesario crear un entorno de prueba. Utilice herramientas automatizadas para crear rápidamente entornos de prueba para probar y depurar.

  5. Oficina automatizada: mediante el uso de scripts de Python, se pueden automatizar algunas tareas de oficina repetitivas, como el envío automático de correo electrónico, la copia de seguridad automática de datos, el llenado automático de formularios, etc.

Estos casos son solo algunas de las operaciones automatizadas, hay muchos otros casos de uso, como la robótica automatizada, la fabricación automatizada, etc.

Por supuesto, se pueden proporcionar algunos códigos de casos.Los siguientes son algunos ejemplos de código Python de operaciones de automatización comunes:

  1. Pruebas de automatización de páginas 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 datos:
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. Despliegue automatizado:
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()

Estos ejemplos de código son solo para demostrar la idea básica de la operación automática y deben modificarse y optimizarse de acuerdo con los requisitos específicos de la aplicación real.

Python inicia sesión automáticamente en el buzón de Qq

Para realizar el inicio de sesión automático de Python en los buzones de correo con códigos de verificación, es necesario utilizar bibliotecas y módulos de terceros. Entre ellos, el selenio es una herramienta de prueba automatizada de Python de uso común, que puede simular la operación del usuario en el navegador, incluido el ingreso de información como el nombre de usuario, la contraseña y el código de verificación.

El siguiente es un código de muestra que usa selenio para iniciar sesión automáticamente en un buzón con un código de verificación:

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()

En este ejemplo, primero creamos una instancia del navegador Chrome y luego abrimos la página de inicio de sesión del buzón de QQ. Dado que la página de inicio de sesión del buzón de QQ usa un iframe, debemos switch_to.frame()cambiar al iframe de inicio de sesión a través del método. A continuación, usamos find_element_by_name()el método para encontrar los cuadros de entrada de nombre de usuario y contraseña y enviarles el nombre de usuario y la contraseña correspondientes. Luego, ingresamos manualmente el código de verificación y esperamos un rato, esperando que se cargue la página. Finalmente, hacemos clic en el botón de inicio de sesión y esperamos a que la página salte. Después de iniciar sesión, podemos driver.quit()cerrar el navegador con el método.

Cabe señalar que la identificación del código de verificación debe realizarse manualmente, ya que la forma y la complejidad del código de verificación son diferentes y no se puede utilizar un método de identificación general. Además, este código de muestra es solo de referencia y la implementación específica puede variar según el tipo de buzón y la forma del código de verificación.

Problema de captcha

Si el captcha aparece en una ventana oculta de WebDriver, puede considerar los siguientes métodos para resolver este problema:

  1. Maximice la ventana de WebDriver para que pueda ver el captcha.

  2. Intente ingresar el código de verificación simulando la entrada del teclado. Puede usar la biblioteca pyautogui en Python para simular la entrada de teclado.

  3. Utilice la tecnología OCR para identificar automáticamente el código de verificación. Puede usar la biblioteca pytesseract en Python para implementar la funcionalidad OCR.

Tenga en cuenta que existe cierto riesgo al ingresar captchas automáticamente, ya que los captchas están diseñados para evitar ataques de bots. Si su programa automatizado se identifica como un robot, su cuenta puede ser prohibida. Por lo tanto, cuando utilice programas automatizados, asegúrese de comportarse de acuerdo con las normas del sitio web e intente evitar el uso frecuente de programas automatizados.

Método 1: maximizar la ventana de WebDriver

Maximice la ventana de WebDriver para que pueda ver el captcha y ocultarlo después de ingresar el captcha.
Puede usar el siguiente código para maximizar la ventana de WebDriver y minimizarlo después de ingresar el 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()

En el código anterior, estamos usando --start-maximizedparámetros para maximizar la ventana del navegador Chrome. Después de esperar a que aparezca el código de verificación, el programa detiene la ejecución y solicita al usuario que ingrese manualmente el código de verificación. Después de que el usuario ingrese el código de verificación, el programa minimizará automáticamente la ventana del navegador Chrome.

Método 2: use la biblioteca PyAutoGUI para simular la entrada del teclado

Sí, puede usar la biblioteca PyAutoGUI para simular la entrada del teclado. PyAutoGUI es una biblioteca de Python que automatiza las operaciones del mouse y el teclado en Windows, macOS y Linux. Puede simular eventos de teclado y mouse, incluidas pulsaciones de teclas, liberación de teclas, clics, arrastres y desplazamientos, entre otros.

El siguiente es un código de muestra que demuestra cómo simular la entrada del teclado usando la biblioteca PyAutoGUI:

import pyautogui

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

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

En este código de muestra, usamos la función input() para obtener el código de verificación ingresado por el teclado y asignarlo a la variable código_verificación. Luego, usamos la función typewrite() de PyAutoGUI para enviar el código de verificación a la ventana actualmente activa. La función typewrite() simulará un evento de tecla del teclado e ingresará el código de verificación carácter por carácter en la ventana activa actual.

Tenga en cuenta que al simular la entrada del teclado usando la biblioteca PyAutoGUI, debe asegurarse de que la ventana activa actual sea la que desea escribir, de lo contrario, puede enviar accidentalmente la entrada del teclado a otras ventanas.

Utilice la tecnología OCR para identificar automáticamente los códigos de verificación

Sí, puede usar la biblioteca pytesseract para el reconocimiento automático de captchas. pytesseract es una biblioteca de Python basada en el motor Tesseract OCR que se puede usar para reconocer varios tipos de imágenes, incluidos captchas.

Para usar la biblioteca pytesseract, primero debe instalar el motor Tesseract OCR. En Debian, puede instalarlo con:

sudo apt-get install tesseract-ocr

Una vez completada la instalación, puede usar el siguiente código para identificar el código de verificación:

import pytesseract
from PIL import Image

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

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

# 打印识别结果
print(code)

En este ejemplo, primero abrimos una captcha.pngimagen captcha llamada usando la biblioteca PIL. Luego, usamos el método de la biblioteca pytesseract image_to_string()para convertir la imagen en una cadena y almacenarla en la variable code. Finalmente, imprimimos el resultado del reconocimiento.

Cabe señalar que el reconocimiento de captcha no siempre es preciso, especialmente cuando el captcha es complejo o contiene ruido. Por lo tanto, debe ajustar el código de acuerdo con la situación real para mejorar la precisión del reconocimiento.

Supongo que te gusta

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