成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python爬蟲遇到驗證碼的幾種處理方式,文章末尾有源碼

開發 后端
本篇文章介紹了爬蟲中驗證碼的處理方式, 并把這些功能封裝起來,供我們使用, 涉及到百度AIP的調用方式, 以及一個最新的開源庫muggle識別庫的使用。

最近事情其實挺多了,打了一下藍橋杯的比賽, 還在準備著一些證書的考試, 關于爬蟲之類的博客都擱著了一段時間了, 關于我自己確實有點退步了, 實屬不該, 其實我自己也是在想, 大三了,到底我是要去考研,還是依然像這樣更新換代的學技術, 再或者, 繼續鉆爬蟲這路子, 雖然我也不知道這路走的順不順, 自己也有點抓不住光明, 這段時間,大概花了一個多月的晚上吧, 終于把Django 的大致過了一次, 剩下的就是對著官方文檔和一些實際項目操作了, 這些我也會打算開一個專欄,來專門記錄一下我學習Django 的一些心酸道路, 學習依舊是這樣, 你不學習,就會失去, 很是莫名其妙, 真的很奇怪, 某人的獎學金是靠關系的, 某項目的獲獎者僅僅只是臨時換了一個名字,。。。

不管這些了,無所謂的東西, 這邊博客,將處理圖片驗證碼的2個比較優秀的方式進行了一次封裝, 分別是百度的aip 和 一個最近火起來的識別muggle-ocr

這里要主要提一下百度的aip,這里面的東西是真的多, 我還擴展了一個識別色情圖片的函數, 有興趣的可以玩一玩, 另外 學了爬蟲之后, 這些圖片真的是應接不暇, 網站也是多的數不勝數, 希望凈網行動加把勁, 剩下的就不比比了, 看實際操作吧。

本篇文章介紹了爬蟲中驗證碼的處理方式, 并把這些功能封裝起來,供我們使用, 涉及到百度AIP的調用方式, 以及一個最新的開源庫muggle識別庫的使用。

目錄:

  • 學會調用百度的aip接口:
  • 擴展百度的色情識別接口:
  • 學會muggle_ocr 識別接口:

封裝源碼:

學會調用百度的aip接口:

  • 1. 首先需要注冊一個賬號:
  • https://login.bce.baidu.com/

注冊完成之后登入

2. 創建項目

在這些技術里面找到文字識別,然后點擊創建一下項目

 

Python爬蟲遇到驗證碼的幾種處理方式,文章末尾有源碼

創建完成之后:

 

Python爬蟲遇到驗證碼的幾種處理方式,文章末尾有源碼

圖片中 AppID , API key, Secret Key 這些待會是需要用的。

下一步可以查看官網文檔,或者直接使用我寫的代碼

3. 安裝一下依賴庫 pip install baidu-aip

這只是一個接口, 需要前面的一些設置。

 

  1. def return_ocr_by_baidu(self, test_image): 
  2.         ""
  3.         ps: 先在__init__  函數中完成你自己的baidu_aip 的一些參數設置 
  4.  
  5.         這次測試使用 高精度版本測試 
  6.                     如果速度很慢 可以換回一般版本 
  7.                     self.client.basicGeneral(image, options) 
  8.                     相關參考網址: 
  9.                     https://cloud.baidu.com/doc/OCR/s/3k3h7yeqa 
  10.         :param test_image: 待測試的文件名稱 
  11.         :return:  返回這個驗證碼的識別效果 如果錯誤  可以多次調用 
  12.         ""
  13.         image = self.return_image_content(test_image=self.return_path(test_image)) 
  14.  
  15.         # 調用通用文字識別(高精度版) 
  16.         # self.client.basicAccurate(image) 
  17.  
  18.         # 如果有可選參數 相關參數可以在上面的網址里面找到 
  19.         options = {} 
  20.         options["detect_direction"] = "true" 
  21.         options["probability"] = "true" 
  22.  
  23.         # 調用 
  24.         result = self.client.basicAccurate(image, options) 
  25.         result_s = result['words_result'][0]['words'
  26.         # 不打印關閉 
  27.         print(result_s) 
  28.         if result_s: 
  29.             return result_s.strip() 
  30.         else
  31.             raise Exception("The result is None , try it !"

擴展百度的色情識別接口:

我們寫代碼肯定是要找點樂子的, 不可能這么枯燥無味吧?

色情識別接口在 內容審核中, 找一下就可以了。

調用方式源碼:

 

  1. # -*- coding :  utf-8 -*- 
  2. # @Time      :  2020/10/22  17:30 
  3. # @author    :  沙漏在下雨 
  4. # @Software  :  PyCharm 
  5. # @CSDN      :  https://me.csdn.net/qq_45906219 
  6.  
  7. from aip import AipContentCensor 
  8. from ocr import MyOrc 
  9.  
  10.  
  11. class Auditing(MyOrc): 
  12.     ""
  13.     這是一個調用百度內容審核的aip接口 
  14.     主要用來審核一些色情 反恐 惡心 之類的東西 
  15.     網址:  https://ai.baidu.com/ai-doc/ANTIPORN/tk3h6xgkn 
  16.     ""
  17.  
  18.     def __init__(self): 
  19.         # super().__init__() 
  20.         APP_ID = '填寫你的ID' 
  21.         API_KEY = '填寫你的KEY' 
  22.         SECRET_KEY = '填寫你的SECRET_KEY' 
  23.  
  24.         self.client = AipContentCensor(APP_ID, API_KEY, SECRET_KEY) 
  25.  
  26.     def return_path(self, test_image): 
  27.         return super().return_path(test_image) 
  28.  
  29.     def return_image_content(self, test_image): 
  30.         return super().return_image_content(test_image) 
  31.  
  32.     def return_Content_by_baidu_of_image(self, test_image, mode=0): 
  33.         ""
  34.         繼承ocr中的一些方法, 因為都是放一起的 少些一點代碼 
  35.         內容審核: 關于圖片中是否存在一些非法不良信息 
  36.         內容審核還可以實現文本審核 我覺得有點雞肋  就沒一起封裝進去 
  37.         url: https://ai.baidu.com/ai-doc/ANTIPORN/Wk3h6xg56 
  38.         :param test_image: 待測試的圖片 可以本地文件 也可以網址 
  39.         :param mode:  默認 = 0 表示 識別的本地文件   mode = 1 表示識別的圖片網址連接 
  40.         :return: 返回識別結果 
  41.         ""
  42.         if mode == 0: 
  43.             filepath = self.return_image_content(self.return_path(test_image=test_image)) 
  44.         elif mode == 1: 
  45.             filepath = test_image 
  46.         else
  47.             raise Exception("The mode is 0 or 1 but your mode is ", mode) 
  48.         # 調用色情識別接口 
  49.         result = self.client.imageCensorUserDefined(filepath) 
  50.  
  51.         # """ 如果圖片是url調用如下 """ 
  52.         # result = self.client.imageCensorUserDefined('http://www.example.com/image.jpg'
  53.         print(result) 
  54.         return result 
  55.  
  56.  
  57. a = Auditing() 
  58. a.return_Content_by_baidu_of_image("test_image/2.jpg", mode=0) 

學會muggle_ocr 識別接口:

這個包是最近火起來的, 使用起來很簡單, 沒多少其他函數

  • 安裝 pip install muggle-ocr 這個下載有點慢 最好使用手機熱點 目前鏡像網站(清華/阿里) 還沒有更新到這個包 因為這個包是最新的一個ocr模型 12
  • 調用接口

 

  1. def return_ocr_by_muggle(self, test_image, mode=1): 
  2.        ""
  3.            調用這個函數使用 muggle_ocr 來進行識別 
  4.            :param  test_image  待測試的文件名稱 最好絕對路徑 
  5.            :param  模型 mode = 0  即 ModelType.OCR 表示識別普通印刷文本 
  6.                  當 mode = 1 默認  即 ModelType.Captcha 表示識別4-6位簡單英輸驗證碼 
  7.  
  8.            官方網站: https://pypi.org/project/muggle-ocr/ 
  9.            :return: 返回這個驗證碼的識別結果 如果錯誤 可以多次調用 
  10.        ""
  11.        # 確定識別物品 
  12.        if mode == 1: 
  13.            sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha) 
  14.        elif mode == 0: 
  15.            sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR) 
  16.        else
  17.            raise Exception("The mode is 0 or 1 , but your mode  == ", mode) 
  18.  
  19.        filepath = self.return_path(test_image=test_image) 
  20.  
  21.        with open(filepath, 'rb'as fr: 
  22.            captcha_bytes = fr.read() 
  23.            result = sdk.predict(image_bytes=captcha_bytes) 
  24.            # 不打印關閉 
  25.            print(result) 
  26.            return result.strip() 

封裝源碼:

 

  1. # -*- coding :  utf-8 -*- 
  2. # @Time      :  2020/10/22  14:12 
  3. # @author    :  沙漏在下雨 
  4. # @Software  :  PyCharm 
  5. # @CSDN      :  https://me.csdn.net/qq_45906219 
  6.  
  7. import muggle_ocr 
  8. import os 
  9. from aip import AipOcr 
  10.  
  11. ""
  12.     PS: 這個作用主要是作了一個封裝 把2個常用的圖片/驗證碼識別方式合在一起 怎么用 取決于自己 
  13.      
  14.     接口1: muggle_ocr  
  15.           pip install muggle-ocr 這個下載有點慢 最好使用手機熱點 
  16.           目前鏡像網站(清華/阿里)  還沒有更新到這個包 因為這個包是最新的一個ocr模型 
  17.            
  18.     接口2: baidu-aip 
  19.           pip install baidu-aip 
  20.           這個知道的人應該很多很多, 但是我覺得還是muggle 這個新包猛的一比 
  21.           調用方式 可以參考官網文檔: https://cloud.baidu.com/doc/OCR/index.html 
  22.           或者使用我如下的方式  都是ok的 
  23.     :param image_path  待識別的圖片路徑  如果目錄很深 推薦使用絕對路徑 
  24.      
  25. ""
  26.  
  27.  
  28. class MyOrc: 
  29.     def __init__(self): 
  30.         # 設置一些必要信息 使用自己百度aip的內容 
  31.         APP_ID = '你的ID' 
  32.         API_KEY = '你的KEY' 
  33.         SECRET_KEY = '你的SECRET_KEY' 
  34.  
  35.         self.client = AipOcr(APP_ID, API_KEY, SECRET_KEY) 
  36.  
  37.     def return_path(self, test_image): 
  38.  
  39.         """:return abs image_path""" 
  40.         # 確定路徑 
  41.         if os.path.isabs(test_image): 
  42.             filepath = test_image 
  43.         else
  44.             filepath = os.path.abspath(test_image) 
  45.         return filepath 
  46.  
  47.     def return_image_content(self, test_image): 
  48.         """:return the image content """ 
  49.         with open(test_image, 'rb'as fr: 
  50.             return fr.read() 
  51.  
  52.     def return_ocr_by_baidu(self, test_image): 
  53.         ""
  54.         ps: 先在__init__  函數中完成你自己的baidu_aip 的一些參數設置 
  55.  
  56.         這次測試使用 高精度版本測試 
  57.                     如果速度很慢 可以換回一般版本 
  58.                     self.client.basicGeneral(image, options) 
  59.                     相關參考網址: 
  60.                     https://cloud.baidu.com/doc/OCR/s/3k3h7yeqa 
  61.         :param test_image: 待測試的文件名稱 
  62.         :return:  返回這個驗證碼的識別效果 如果錯誤  可以多次調用 
  63.         ""
  64.         image = self.return_image_content(test_image=self.return_path(test_image)) 
  65.  
  66.         # 調用通用文字識別(高精度版) 
  67.         # self.client.basicAccurate(image) 
  68.  
  69.         # 如果有可選參數 相關參數可以在上面的網址里面找到 
  70.         options = {} 
  71.         options["detect_direction"] = "true" 
  72.         options["probability"] = "true" 
  73.  
  74.         # 調用 
  75.         result = self.client.basicAccurate(image, options) 
  76.         result_s = result['words_result'][0]['words'
  77.         # 不打印關閉 
  78.         print(result_s) 
  79.         if result_s: 
  80.             return result_s.strip() 
  81.         else
  82.             raise Exception("The result is None , try it !"
  83.  
  84.     def return_ocr_by_muggle(self, test_image, mode=1): 
  85.         ""
  86.             調用這個函數使用 muggle_ocr 來進行識別 
  87.             :param  test_image  待測試的文件名稱 最好絕對路徑 
  88.             :param  模型 mode = 0  即 ModelType.OCR 表示識別普通印刷文本 
  89.                   當 mode = 1 默認  即 ModelType.Captcha 表示識別4-6位簡單英輸驗證碼 
  90.  
  91.             官方網站: https://pypi.org/project/muggle-ocr/ 
  92.             :return: 返回這個驗證碼的識別結果 如果錯誤 可以多次調用 
  93.         ""
  94.         # 確定識別物品 
  95.         if mode == 1: 
  96.             sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha) 
  97.         elif mode == 0: 
  98.             sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR) 
  99.         else
  100.             raise Exception("The mode is 0 or 1 , but your mode  == ", mode) 
  101.  
  102.         filepath = self.return_path(test_image=test_image) 
  103.  
  104.         with open(filepath, 'rb'as fr: 
  105.             captcha_bytes = fr.read() 
  106.             result = sdk.predict(image_bytes=captcha_bytes) 
  107.             # 不打印關閉 
  108.             print(result) 
  109.             return result.strip() 
  110.  
  111.  
  112. # a = MyOrc() 
  113.  
  114. # a.return_ocr_by_baidu(test_image='test_image/digit_img_1.png'

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2021-08-02 12:29:15

Python爬蟲網站

2021-06-10 18:24:59

反爬蟲驗證碼爬蟲

2020-04-26 14:40:19

戴爾

2013-06-19 10:19:59

2015-01-21 16:07:57

Android源碼驗證碼倒計時

2022-02-11 07:10:15

驗證碼

2021-01-19 10:29:34

短信驗證碼密碼

2020-11-16 07:28:53

驗證碼

2022-12-06 08:18:59

2011-11-02 12:43:33

2011-11-02 16:46:41

2019-06-18 07:12:25

驗證碼漏洞加密

2025-01-27 12:19:51

2023-07-10 08:00:13

架構Rest返回值

2010-01-11 14:16:14

VB.NET生成驗證碼

2009-02-09 14:17:36

2009-08-11 14:05:28

JSP驗證碼

2015-09-21 15:31:05

php實現驗證碼

2017-12-21 07:38:19

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99国产在线 | 精品亚洲一区二区三区 | 97国产一区二区 | 91综合网 | 天天爱综合| 亚洲小视频在线播放 | 久久精品aaa | 久久国产免费看 | 91欧美激情一区二区三区成人 | 色综合久 | 国产一区二区三区网站 | 欧美视频在线看 | 精品久久久一区 | 日韩欧美二区 | 精品国产一二三区 | 日本在线黄色 | 国产一级片免费视频 | 国产一区 | 91久久精品一区二区二区 | 日韩成人免费视频 | 日韩精品成人网 | 激情一区二区三区 | 九九久久免费视频 | 成人中文字幕在线 | 一级黄色在线 | 亚洲成人999| 91久久久精品国产一区二区蜜臀 | 九九热国产视频 | 一区二区三区高清 | 九九热免费看 | 色伊人 | 亚洲国产精品一区二区久久 | 久久av一区二区三区 | 精品真实国产乱文在线 | 精品亚洲一区二区三区 | 成人片免费看 | 亚洲免费一区二区 | 久久综合一区 | 日韩在线观看中文字幕 | 欧美在线一区视频 | 黄色国产区|