中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python抓取網頁時處理驗證碼的方法

發布時間:2020-08-14 09:35:14 來源:億速云 閱讀:247 作者:小新 欄目:編程語言

這篇文章主要介紹python抓取網頁時處理驗證碼的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

python抓取網頁時是如何處理驗證碼的?下面給大家介紹幾種方法:

1、輸入式驗證碼

這種驗證碼主要是通過用戶輸入圖片中的字母、數字、漢字等進行驗證。如下圖:

python抓取網頁時處理驗證碼的方法

解決思路:這種是最簡單的一種,只要識別出里面的內容,然后填入到輸入框中即可。這種識別技術叫OCR,這里我們推薦使用Python的第三方庫,tesserocr。對于沒有什么背影影響的驗證碼如圖2,直接通過這個庫來識別就可以。但是對于有嘈雜的背景的驗證碼這種,直接識別識別率會很低,遇到這種我們就得需要先處理一下圖片,先對圖片進行灰度化,然后再進行二值化,再去識別,這樣識別率會大大提高。

2、滑動式驗證碼

這種是將備選碎片直線滑動到正確的位置,如下圖:

python抓取網頁時處理驗證碼的方法

解決思路:對于這種驗證碼就比較復雜一點,但也是有相應的辦法。我們直接想到的就是模擬人去拖動驗證碼的行為,點擊按鈕,然后看到了缺口的位置,最后把拼圖拖到缺口位置處完成驗證。

第一步:點擊按鈕。然后我們發現,在你沒有點擊按鈕的時候那個缺口和拼圖是沒有出現的,點擊后才出現,這為我們找到缺口的位置提供了靈感。

第二步:拖到缺口位置。

我們知道拼圖應該拖到缺口處,但是這個距離如果用數值來表示?

通過我們第一步觀察到的現象,我們可以找到缺口的位置。這里我們可以比較兩張圖的像素,設置一個基準值,如果某個位置的差值超過了基準值,那我們就找到了這兩張圖片不一樣的位置,當然我們是從那塊拼圖的右側開始并且從左到右,找到第一個不一樣的位置時就結束,這是的位置應該是缺口的left,所以我們使用selenium拖到這個位置即可。

這里還有個疑問就是如何能自動的保存這兩張圖?

這里我們可以先找到這個標簽,然后獲取它的location和size,然后 top,bottom,left,right = location['y'] ,location['y']+size['height']+ location['x'] + size['width']  ,然后截圖,最后摳圖填入這四個位置就行。

具體的使用可以查看selenium文檔,點擊按鈕前摳張圖,點擊后再摳張圖。最后拖動的時候要需要模擬人的行為,先加速然后減速。因為這種驗證碼有行為特征檢測,人是不可能做到一直勻速的,否則它就判定為是機器在拖動,這樣就無法通過驗證了。

3、點擊式的圖文驗證和圖標選擇

圖文驗證:通過文字提醒用戶點擊圖中相同字的位置進行驗證。

圖標選擇: 給出一組圖片,按要求點擊其中一張或者多張。借用萬物識別的難度阻擋機器。

這兩種原理相似,只不過是一個是給出文字,點擊圖片中的文字,一個是給出圖片,點出內容相同的圖片。

這兩種沒有特別好的方法,只能借助第三方識別接口來識別出相同的內容,推薦一個超級鷹,把驗證碼發過去,會返回相應的點擊坐標。

然后再使用selenium模擬點擊即可。具體怎么獲取圖片和上面方法一樣。

4、宮格驗證碼

 python抓取網頁時處理驗證碼的方法

這種就很棘手,每一次出現的都不一樣,但是也會出現一樣的。而且拖動順序都不一樣。

但是我們發現不一樣的驗證碼個數是有限的,這里采用模版匹配的方法。我覺得就好像暴力枚舉,把所有出現的驗證碼保存下來,然后挑出不一樣的驗證碼,按照拖動順序命名,我們從左到右上下到下,設為1,2,3,4。上圖的滑動順序為4,3,2,1,所以我們命名4_3_2_1.png,這里得手動搞。當驗證碼出現的時候,用我們保存的圖片一一枚舉,與出現這種比較像素,方法見上面。如果匹配上了,拖動順序就為4,3,2,1。然后使用selenium模擬即可。

以上是python抓取網頁時處理驗證碼的方法的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

闽侯县| 丰顺县| 内黄县| 江华| 德江县| 宜阳县| 福贡县| 饶河县| 德保县| 仁布县| 阜阳市| 惠安县| 武城县| 湘阴县| 磐石市| 昌图县| 新干县| 井冈山市| 惠水县| 永善县| 抚宁县| 和林格尔县| 茌平县| 漳州市| 平定县| 大宁县| 靖远县| 冀州市| 会东县| 忻城县| 建德市| 雅安市| 全南县| 探索| 胶南市| 承德县| 望城县| 怀来县| 中宁县| 万荣县| 长岛县|