Serie de autoaprendizaje sobre rastreadores de Python (6)

Inserte la descripción de la imagen aquí

Prefacio

Este es el sexto capítulo, pronto. Si lo sabe todo, este artículo será relativamente fácil.
(¿Es este realmente el caso? ¡No lo sé!)
Después de todo, este artículo trata sobre el inicio de sesión con código de verificación.


Método 1: inicio de sesión con cookies

Esta es una forma relativamente simple y grosera.En primer lugar, si no hay necesidad de un código de verificación, solía rastrear CSDN para obtener mi información personal. De esta manera es genial.

Inserte la descripción de la imagen aquí

Debido a las características de la cookie y la sesión, es posible que aumente durante el período de validez de la cookie.

La razón para decir esto es que naturalmente se debe al éxito (es difícil decir qué sitios web se han rastreado, entiéndalo). Sin embargo, debido al pequeño número de pruebas, no me atrevo a garantizar el 100% de éxito.
De todos modos, obtenga la cookie lo antes posible después de iniciar sesión e inicie sesión lo antes posible.

Aquí me gustaría decir algo: Antes de hacer una "operación de gama alta", ¿por qué no probar este método durante veinte minutos? ¿Y si se hace?
Una vez quise usar selenio para iniciar sesión manualmente. Este método puede iniciar sesión después de una prueba, pero rastrear datos no es tan simple (tal vez solo use selenio para hacer un poco, no para capturar datos).


Método 2: reconocimiento óptico de caracteres

Nota: No lea este método si no lo comprende. No es de extrañar que nunca usaré este método en mi vida, y mucho menos usaré pytesseract.

Escuche el nombre, genial.
En realidad, es OCR.

Descargar la imagen del código de verificación

Primero busque una URL de destino, primero busque el código de verificación simple, texto en blanco y negro.
El enlace de muestra de la imagen captcha , hay sesenta imágenes de código de verificación en escala de grises, lo cual es suficiente.

Primero baje la imagen, puede ver que esta imagen está incrustada en la página. ¿Qué hacer con imágenes como esta?
No es difícil hacerlo, las imágenes también son archivos, siempre que sean archivos, deben guardarse en la carpeta del sitio web.
Las imágenes incrustadas simplemente se escriben en una ruta relativa.

Pruébelo con el directorio raíz del sitio web y la dirección de la imagen: https://captcha.com/images/captcha/botdetect3-captcha-ancientmosaic.jpg
¿Puede descargarlo ahora?

import requests

import os

import time

from lxml import etree

def get_Page(url,headers):

    response = requests.get(url,headers=headers)

    if response.status_code == 200:

        return response.text

    return None

def parse_Page(html,headers):

    html_lxml = etree.HTML(html)

    datas = html_lxml.xpath( './/div[@class="captcha_images_left"]|.//div[@class="captcha_images_right"]')

    # 创建保存验证码文件夹

    file = 'D:/YZM'

    if os.path.exists(file):

        os.chdir(file)

    else:

        os.mkdir(file)

        os.chdir(file)

    for data in datas:

    # 验证码名称

        name = data.xpath( './/h3')

    # 验证码链接

        src = data.xpath( './/div/img/@src')

    # print(len(src))

        count = 0

        for i in range(len(name)):

    # 验证码图片文件名

            filename = name[i].text + '.jpg'

            img_url = 'https://captcha.com/'+ src[i]

            response = requests.get(img_url,headers=headers)

            if response.status_code == 200:

                image = response.content

                with open(filename, 'wb') as f:

                    f.write(image)

                count += 1

                print( '保存第{}张验证码成功'.format(count))

                time.sleep( 1)

def main():

    url = 'https://captcha.com/captcha-examples.html?cst=corg'

    headers = {
    
     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'}

    html = get_Page(url,headers)

    parse_Page(html,headers)

if __name__ == '__main__':

    main()

Reconocimiento de texto de Baidu

Python es una biblioteca tesserocr que maneja OCR. Se dice que la precisión y el nivel de uso no son tan buenos como Baidu, así que hablaré de esto primero.

Documento de Baidu OCR-API

No hablaré de las capacidades de la interfaz, la gente tiene sus propios anuncios oficiales.

Me enfocaré en cómo usarlo.

Primero, debes registrar una cuenta.


La creación del programa de inteligencia artificial Baidu y la adquisición de AKSK


Implementación y prueba de código

from aip import AipOcr  # pip install baidu-aip
import os

i = 0

j = 0

APP_ID = '你的 APP_ID '
API_KEY = '你的API_KEY'
SECRET_KEY = '你的SECRET_KEY'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

# 读取图片

file_path = 'D:/YZM'

filenames = os.listdir(file_path)

# print(filenames)

for filename in filenames:
# 将路径与文件名结合起来就是每个文件的完整路径
    info = os.path.join(file_path,filename)

    with open(info, 'rb') as fp:
        # 获取文件夹的路径
        image = fp.read()

        # 定义参数变量
        options = {
    
    
            'detect_direction': 'true',
            'language_type': 'CHN_ENG',
        }

        # 调用通用文字识别接口
        result = client.basicGeneral(image,options)
        print(result)

        if result[ 'words_result_num'] == 0:
            print(filename + ':'+ '----')
            i += 1
        else:
            for word in result['words_result']:
                print(filename + ' : '+word['words'])
                j += 1

        print('共识别验证码{}张'.format(i+j))
        print('未识别出文本{}张'.format(i))
        print('已识别出文本{}张'.format(j))

Es terrible, solo dos de ellos tienen razón. . .

Está bien, que no cunda el pánico, echemos un vistazo a la imagenProcesando imagen digital

Procesando imagen digital

from PIL import Image
import os


file_path = 'D:/YZM'
filenames = os.listdir(file_path)

for filename in filenames:
    info = os.path.join(file_path,filename)

    # 打开图片
    image = Image.open(info)

    # 传入'L'将图片转化为灰度图像
    gray = image.convert('L')

    bw = gray.point(lambda x: 0 if x < 1 else 255, '1')

    bw.save(filename)

Después del tratamiento, la situación general es mejor, pero eso es todo.
Debe ser que no soy bueno aprendiendo. Después de todo, mi procesamiento de imágenes digitales se puede hacer sin el esfuerzo de profesores y compañeros. Una gran parte de las fotografías originales en blanco y negro se borran después de lavarlas. .

Pero, dado que está automatizado, no lo lave, solo intente más.


Método tres:

El método anterior huele mal y es largo. No me gusta y desperdicio mi tarde.
Soy una persona real, gato negro y gato blanco, siempre que el gato pueda atrapar ratones es un buen gato.

Inserte la descripción de la imagen aquí

El primer método requiere una cookie, lo que dará miedo, y luego la operación con selenio no es fácil de captar los datos.
No importa cómo sea el segundo método, es solo para identificar y, finalmente, debe enviar los datos con el método de publicación.

Ya que puedo usar selenio y cookies, ¿qué más no puedo hacer? Baja directamente y completa la imagen. Violencia En ese momento, nuestros amigos de "Principiante a Confundido" del equipo de "Pangolín Reptil" hicieron precisamente eso, y lo lograron.

Sólo date cuenta, no te importa cómo me doy cuenta.


Bien, seamos honestos, si tiene que lidiar con una gran cantidad de códigos de verificación, el segundo método es profundizar.


Veamos algo más a continuación.


Inserte la descripción de la imagen aquí

Cambiar de gusto

Código de verificación del control deslizante: entrada del rastreador clásico (18) | Reconocimiento del código de verificación por deslizamiento
Mírelo, hemos tratado antes, todos somos estudiantes de big data, en realidad existe la posibilidad de que aparezca en este artículo.

Descifrando el código de verificación: entrada del rastreador clásico (19) | Mayor dificultad, descifrando el código de verificación


Pongamos de nuevo el vínculo entre scrapy y expresión regular. En los próximos días, hay razones para tener que salir por un período de tiempo, por lo que se ralentizará.

Scrapy: Quiero aprender Python en secreto, y luego aturdir a todos (el decimotercer día)
todos están muy motivados.

Regular: Hoy pondré las palabras aquí, y mañana tendré [Expresiones regulares]
este artículo que personalmente me gusta, pero no hay tráfico.


Inserte la descripción de la imagen aquí

Estoy emitiendo dos oraciones: originalmente se esperaba que esta serie escribiera ocho puntos de conocimiento y dos proyectos para el combate real, pero debido a mi propia tecnología limitada y algunas razones físicas, terminaré el sexto artículo. Ahora que tengo algunos conocimiento, pondré dos proyectos de combate reales a continuación. Esto no se descartará, ni será del tipo que todos están haciendo. Son los huesos duros que encontró el equipo "Reptilian Pangolin". Vamos a comer algo.

Este artículo, aunque es un poco ridículo, pero no es muy acuoso, ¿verdad?Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_43762191/article/details/113099271
Recomendado
Clasificación