Série de auto-estudo do rastreador Python (6)

Insira a descrição da imagem aqui

Prefácio

Este é o sexto capítulo, em breve. Se você souber de tudo, este artigo será relativamente fácil.
(Será mesmo o caso? Não sei !!!)
Afinal, este artigo é sobre login com código de verificação.


Método 1: login de cookie

Esta é uma forma relativamente simples e rude. Em primeiro lugar, se não houver necessidade de um código de verificação, eu costumava rastrear CSDN para obter minhas informações pessoais. Esse jeito é ótimo.

Insira a descrição da imagem aqui

Pelas características do cookie e da sessão, é possível aumentar durante o período de validade do cookie.

A razão para dizer isso é que é naturalmente por causa do sucesso (é difícil dizer quais sites foram rastreados, entenda). Porém, devido ao pequeno número de testes, não ouso garantir 100% de sucesso.
De qualquer forma, obtenha o cookie o mais rápido possível após fazer o login, e faça o login o mais rápido possível.

Aqui eu gostaria de dizer algo: Antes de fazer uma "operação de ponta", por que não tentar este método por vinte minutos, e se for feito?
Uma vez eu quis usar selênio para fazer login manualmente. Este método pode fazer login após um teste, mas rastrear dados não é tão simples (talvez eu use selênio apenas para fazer um pouco, não para pegar dados).


Método 2: reconhecimento óptico de caracteres

Observação: não leia este método se você não o compreender. Não é de surpreender que nunca usarei esse método na minha vida, muito menos pytesseract.

Ouça o nome, incrível.
Na verdade, é OCR.

Baixar imagem do código de verificação

Primeiro encontre um URL de destino, primeiro encontre o código de verificação simples, texto em preto e branco.
O link de amostra da imagem captcha , há sessenta imagens de código de verificação em escala de cinza, o que é suficiente.

Primeiro puxe a imagem para baixo, você pode ver que esta imagem está embutida na página. O que fazer com fotos como essa?
Não é difícil fazer isso. As imagens também são arquivos. Desde que sejam arquivos, devem ser guardadas na pasta do site.
As imagens incorporadas são apenas escritas em um caminho relativo.

Experimente com o diretório raiz do site e o endereço da imagem: https://captcha.com/images/captcha/botdetect3-captcha-ancientmosaic.jpg
Você pode fazer o download agora?

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

Reconhecimento de texto Baidu

Python é uma biblioteca tesserocr que lida com OCR. Diz-se que a precisão e o nível de uso não são tão bons quanto o Baidu, então falarei sobre isso primeiro.

Documento Baidu OCR-API

Não vou falar sobre os recursos da interface. As pessoas têm seus próprios anúncios oficiais.

Vou me concentrar em como usá-lo.

Primeiro, você deve registrar uma conta.


A criação do programa de inteligência artificial Baidu e a aquisição da AKSK


Implementação e teste 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))

É terrível, apenas dois deles estão certos. . .

Tudo bem, não entre em pânico, vamos dar uma olhada na imagemProcessamento digital de imagens

Processamento digital de imagens

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)

Depois do tratamento, o quadro geral é melhor, mas é isso.
Acho que não sou bom em aprender. Afinal, meu processamento digital de imagens pode ser feito sem o esforço de professores e colegas de classe. Grande parte das fotos originais em preto e branco são desbotadas depois de lavadas. .

Mas, como é automatizado, não o lave, tente mais.


Método três:

O método acima é fedorento e longo. Não gosto e perco minha tarde.
Eu sou uma pessoa real, gato preto e gato branco, desde que o gato possa pegar ratos é um bom gato.

Insira a descrição da imagem aqui

O primeiro método requer um biscoito, o que vai ser assustador, e aí a operação com selênio não é fácil de captar os dados.
Não importa como seja o segundo método, é só identificar, e por último tem que enviar os dados com o método post.

Já que posso usar selênio e cookies, o que mais não posso fazer? Desça diretamente e preencha a imagem. Violência. Naquela época, nossos amigos do "Principiante a Confuso" da equipe do "Pangolim Reptiliano" fizeram exatamente isso e conseguiram.

Apenas perceba, você não se importa como eu percebo.


Ok, vamos ser honestos, se você tiver que lidar com um grande número de códigos de verificação, o segundo método é ir mais fundo.


Vamos ver outra coisa a seguir


Insira a descrição da imagem aqui

Mudar o gosto

Código de verificação do controle deslizante: entrada do rastreador clássico (18) | Reconhecimento do código de verificação do deslize
Olhe para ele, já falamos sobre isso antes, somos todos estudantes de big data; na verdade, há uma chance de eu aparecer neste artigo.

Decifrando o código de verificação: entrada clássica do rastreador (19) | Maior dificuldade, decifrando o código de verificação


Vamos colocar a ligação entre o scrapy e a expressão regular novamente. Nos próximos dias, há motivos para ter que sair por um período de tempo, então será mais lento.

Scrapy: Eu quero aprender Python secretamente, e então surpreender todos (no décimo terceiro dia)
todos estão muito motivados.

Regular: Hoje vou colocar as palavras aqui, amanhã terei [Expressões regulares]
esse artigo que eu gosto pessoalmente, mas não tem trânsito.


Insira a descrição da imagem aqui

Estou bipando duas frases: originalmente esperava-se que esta série escrevesse oito pontos de conhecimento e dois projetos para o combate real, mas devido à minha própria tecnologia limitada e alguns motivos físicos, vou terminar o sexto artigo. Agora que consegui alguns conhecimento, colocarei dois projetos reais de combate a seguir.Isso não será desconsiderado, nem será do tipo que todo mundo está fazendo. São os ossos duros encontrados pela equipe "Reptilian Pangolin". Vamos dar uma mordida.

Esse artigo, embora seja um pouco ridículo, mas não é muito aguado, certoInsira a descrição da imagem aqui

Acho que você gosta

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