首頁  >  文章  >  後端開發  >  python爬蟲怎麼識別

python爬蟲怎麼識別

silencement
silencement原創
2019-05-22 18:03:225094瀏覽

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文檔,點選按鈕前摳張圖,點擊後再摳張圖。最後拖曳的時候要需要模擬人的行為,先加速然後減速。因為這種驗證碼有行為特徵檢測,人是不可能做到一直勻速的,否則它就判定為是機器在拖動,這樣就無法通過驗證了。

相關學習推薦:python教學

以上是python爬蟲怎麼識別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn