Pythonクローラーは、検証コードを処理するいくつかの方法に遭遇します。ソースコードは記事の最後にあります

最近はかなり物事が進んでいます。ブルーブリッジカップでゲームをしましたが、まだいくつかの証明書試験の準備をしています。爬虫類に関するブログはしばらく保留されています。私は自分自身について少し後退しました。でも、それは真実ではありません。実際、私は、3年生のときに、大学院の入学試験を受けるのか、それともこのような新しいテクノロジーを学ぶのか、それともクローラーロードを続けるのかを考えています。 、この道がスムーズかどうかはわかりませんが、ちなみに光がつかめません。この間、1ヶ月以上かかりました。ようやくジャンゴを1回くらい通過しました。残りは公式文書といくつかの実際のプロジェクトを操作することです。また、Djangoを学ぶ際の私の悲しい道のいくつかを具体的に記録するためのコラムを開く予定です。学習は同じです。勉強しないと失われます。それは非常に説明がつかず、本当に奇妙です。誰かの奨学金は関係によって異なります。あるプロジェクトの勝者は一時的に名前を変更しただけです。

多くの人がPythonを学び、どこから始めればよいのかわかりません。

多くの人がPythonを学び、基本的な文法を習得した後、どこから始めればよいかわかりません。

事例研究を行った多くの人々は、より高度な知識を学ぶ方法を知りません。

したがって、これら3つのタイプの人々のために、ビデオチュートリアル、電子書籍、およびコースのソースコードを無料で受け取ることができる優れた学習プラットフォームを提供します。??¤

QQグループ:701698587

 


これに関係なく、問題ではありません。このブログには、画像検証コードを処理する2つの優れた方法、つまりBaiduのaipと最近人気のある認識マグルocrがカプセル化されています。
ここでは、主にBaiduについて説明します。ポルノ写真を識別する機能も拡張しました。興味のある人は楽しく過ごせます。クローラーを学んだ後は、これらの写真は本当に圧倒的で、ウェブサイトは無数にあります。ネットネットの運用がもっと活発になり、残りはもっと活発になることを願っています。比較しません。実際の動作を見てみましょう。


この記事では、クローラーでの検証コードの処理方法を紹介し、Baidu AIPの呼び出し方法や、最新のオープンソースライブラリマグル認識ライブラリの使用など、使用できるこれらの関数をカプセル化します。 。コレクション!

ブロガーの他の記事、読むことを歓迎します!


目次:

  • Baiduのaipインターフェースの呼び出し方法を学びます。

  • Baiduのポルノ認識インターフェースを拡張します。

  • muggle_ocrを学習して、インターフェースを識別します。

  • パッケージのソースコード:


Baiduのaipインターフェースの呼び出し方法を学びます。

1.まず、アカウントを登録する必要があります。

https://login.bce.baidu.com/

注册完成之后登入

2.プロジェクトを作成します

これらのテクノロジーでテキスト認識を見つけ、クリックしてプロジェクトを作成します

画像

 

作成後:

画像

 

写真のAppID、APIキー、およびシークレットキーは後で必要になります。

次に、公式ウェブサイトのドキュメントを確認するか、私が直接書いたコードを使用することができます

3.依存関係ライブラリpipinstallbaidu-aipをインストールします

これは単なるインターフェースであり、いくつかの以前の設定が必要です。

 def return_ocr_by_baidu(self, test_image):
        """
        ps: 先在__init__  函数中完成你自己的baidu_aip 的一些参数设置

        这次测试使用 高精度版本测试
                    如果速度很慢 可以换回一般版本
                    self.client.basicGeneral(image, options)
                    相关参考网址:
                    https://cloud.baidu.com/doc/OCR/s/3k3h7yeqa
        :param test_image: 待测试的文件名称
        :return:  返回这个验证码的识别效果 如果错误  可以多次调用
        """
        image = self.return_image_content(test_image=self.return_path(test_image))

        # 调用通用文字识别(高精度版)
        # self.client.basicAccurate(image)

        # 如果有可选参数 相关参数可以在上面的网址里面找到
        options = {}
        options["detect_direction"] = "true"
        options["probability"] = "true"

        # 调用
        result = self.client.basicAccurate(image, options)
        result_s = result['words_result'][0]['words']
        # 不打印关闭
        print(result_s)
        if result_s:
            return result_s.strip()
        else:
            raise Exception("The result is None , try it !")

Baiduのポルノ認識インターフェースを拡張します。

コードを書くのは楽しいはずですが、それほど退屈なことではありませんよね?

ポルノ識別インターフェースはコンテンツレビュープロセスにあります。探してください。

呼び出しメソッドのソースコード:

# -*- coding :  utf-8 -*-
# @Time      :  2020/10/22  17:30
# @author    :  沙漏在下雨
# @Software  :  PyCharm
# @CSDN      :  https://me.csdn.net/qq_45906219

from aip import AipContentCensor
from ocr import MyOrc


class Auditing(MyOrc):
    """
    这是一个调用百度内容审核的aip接口
    主要用来审核一些色情 反恐 恶心 之类的东西
    网址:  https://ai.baidu.com/ai-doc/ANTIPORN/tk3h6xgkn
    """

    def __init__(self):
        # super().__init__()
        APP_ID = '填写你的ID'
        API_KEY = '填写你的KEY'
        SECRET_KEY = '填写你的SECRET_KEY'

        self.client = AipContentCensor(APP_ID, API_KEY, SECRET_KEY)

    def return_path(self, test_image):
        return super().return_path(test_image)

    def return_image_content(self, test_image):
        return super().return_image_content(test_image)

    def return_Content_by_baidu_of_image(self, test_image, mode=0):
        """
        继承ocr中的一些方法, 因为都是放一起的 少些一点代码
        内容审核: 关于图片中是否存在一些非法不良信息
        内容审核还可以实现文本审核 我觉得有点鸡肋  就没一起封装进去
        url: https://ai.baidu.com/ai-doc/ANTIPORN/Wk3h6xg56
        :param test_image: 待测试的图片 可以本地文件 也可以网址
        :param mode:  默认 = 0 表示 识别的本地文件   mode = 1 表示识别的图片网址连接
        :return: 返回识别结果
        """
        if mode == 0:
            filepath = self.return_image_content(self.return_path(test_image=test_image))
        elif mode == 1:
            filepath = test_image
        else:
            raise Exception("The mode is 0 or 1 but your mode is ", mode)
        # 调用色情识别接口
        result = self.client.imageCensorUserDefined(filepath)

        # """ 如果图片是url调用如下 """
        # result = self.client.imageCensorUserDefined('http://www.example.com/image.jpg')
        print(result)
        return result


a = Auditing()
a.return_Content_by_baidu_of_image("test_image/2.jpg", mode=0)

muggle_ocrを学習して、インターフェースを識別します。

このパッケージは最近人気があり、使い方はとても簡単で、他の機能はあまりありません

  1. Install pip install muggle-ocrこのダウンロードは少し遅いので、モバイルホットスポットを使用することをお勧めします。このパッケージは最新のocrモデル12であるため、現在、ミラーWebサイト(Tsinghua / Ali)はこのパッケージに更新されていません。

  2. 通話インターフェース

 def return_ocr_by_muggle(self, test_image, mode=1):
        """
            调用这个函数使用 muggle_ocr 来进行识别
            :param  test_image  待测试的文件名称 最好绝对路径
            :param  模型 mode = 0  即 ModelType.OCR 表示识别普通印刷文本
                  当 mode = 1 默认  即 ModelType.Captcha 表示识别4-6位简单英输验证码

            官方网站: https://pypi.org/project/muggle-ocr/
            :return: 返回这个验证码的识别结果 如果错误 可以多次调用
        """
        # 确定识别物品
        if mode == 1:
            sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha)
        elif mode == 0:
            sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)
        else:
            raise Exception("The mode is 0 or 1 , but your mode  == ", mode)

        filepath = self.return_path(test_image=test_image)

        with open(filepath, 'rb') as fr:
            captcha_bytes = fr.read()
            result = sdk.predict(image_bytes=captcha_bytes)
            # 不打印关闭
            print(result)
            return result.strip()

パッケージのソースコード:

# -*- coding :  utf-8 -*-
# @Time      :  2020/10/22  14:12
# @author    :  沙漏在下雨
# @Software  :  PyCharm
# @CSDN      :  https://me.csdn.net/qq_45906219

import muggle_ocr
import os
from aip import AipOcr

"""
    PS: 这个作用主要是作了一个封装 把2个常用的图片/验证码识别方式合在一起 怎么用 取决于自己
    
    接口1: muggle_ocr 
          pip install muggle-ocr 这个下载有点慢 最好使用手机热点
          目前镜像网站(清华/阿里)  还没有更新到这个包 因为这个包是最新的一个ocr模型
          
    接口2: baidu-aip
          pip install baidu-aip
          这个知道的人应该很多很多, 但是我觉得还是muggle 这个新包猛的一比
          调用方式 可以参考官网文档: https://cloud.baidu.com/doc/OCR/index.html
          或者使用我如下的方式  都是ok的
    :param image_path  待识别的图片路径  如果目录很深 推荐使用绝对路径
    
"""


class MyOrc:
    def __init__(self):
        # 设置一些必要信息 使用自己百度aip的内容
        APP_ID = '你的ID'
        API_KEY = '你的KEY'
        SECRET_KEY = '你的SECRET_KEY'

        self.client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

    def return_path(self, test_image):

        """:return abs image_path"""
        # 确定路径
        if os.path.isabs(test_image):
            filepath = test_image
        else:
            filepath = os.path.abspath(test_image)
        return filepath

    def return_image_content(self, test_image):
        """:return the image content """
        with open(test_image, 'rb') as fr:
            return fr.read()

    def return_ocr_by_baidu(self, test_image):
        """
        ps: 先在__init__  函数中完成你自己的baidu_aip 的一些参数设置

        这次测试使用 高精度版本测试
                    如果速度很慢 可以换回一般版本
                    self.client.basicGeneral(image, options)
                    相关参考网址:
                    https://cloud.baidu.com/doc/OCR/s/3k3h7yeqa
        :param test_image: 待测试的文件名称
        :return:  返回这个验证码的识别效果 如果错误  可以多次调用
        """
        image = self.return_image_content(test_image=self.return_path(test_image))

        # 调用通用文字识别(高精度版)
        # self.client.basicAccurate(image)

        # 如果有可选参数 相关参数可以在上面的网址里面找到
        options = {}
        options["detect_direction"] = "true"
        options["probability"] = "true"

        # 调用
        result = self.client.basicAccurate(image, options)
        result_s = result['words_result'][0]['words']
        # 不打印关闭
        print(result_s)
        if result_s:
            return result_s.strip()
        else:
            raise Exception("The result is None , try it !")

    def return_ocr_by_muggle(self, test_image, mode=1):
        """
            调用这个函数使用 muggle_ocr 来进行识别
            :param  test_image  待测试的文件名称 最好绝对路径
            :param  模型 mode = 0  即 ModelType.OCR 表示识别普通印刷文本
                  当 mode = 1 默认  即 ModelType.Captcha 表示识别4-6位简单英输验证码

            官方网站: https://pypi.org/project/muggle-ocr/
            :return: 返回这个验证码的识别结果 如果错误 可以多次调用
        """
        # 确定识别物品
        if mode == 1:
            sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha)
        elif mode == 0:
            sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)
        else:
            raise Exception("The mode is 0 or 1 , but your mode  == ", mode)

        filepath = self.return_path(test_image=test_image)

        with open(filepath, 'rb') as fr:
            captcha_bytes = fr.read()
            result = sdk.predict(image_bytes=captcha_bytes)
            # 不打印关闭
            print(result)
            return result.strip()


# a = MyOrc()

# a.return_ocr_by_baidu(test_image='test_image/digit_img_1.png')

おすすめ

転載: blog.csdn.net/Python_kele/article/details/115014983