Scrapy-Splash簡介及驗證碼的處理(一)


  在之前的博客中,我們學習了selenium的用法,它是一個動態抓取頁面的方法,但是,動態抓取頁面還有其他的方法,這里介紹Splash方法,並結合具體實例進行講解。


一:Splash簡介與准備

1.簡介

  Splash是一個JavaScript渲染服務,說到js大家肯定會想到網頁,對的,Splash是Scrapy中支持JavaScrapy渲染的工具,是一個帶有HTTP API的輕量級瀏覽器,可以進行動態渲染頁面的抓取。

2.安裝

  Scrapy-Splash安裝有兩個方法,這里我們用Docker進行安裝,因此首先要安裝Docker(多容器技術,將應用和環境進行打包,形成一個獨立的"應用",可以讓每個應用隔離,適合於大規模爬蟲系統),下載地址為:

  https://docs.docker.com/docker-for-windows/install/

  下載后安裝,會出現 docker desktop requires Windows 10 Pro or Enterprise version 15063問題。
這個問題是windows10家庭版不支持Hyper-V,無法安裝docker,需要下載docker toolbox安裝。地址為:

  http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/


  也可以開啟Hyper-V進行安裝,這里就不具體說明了。

  安裝后打開cmd控制台,會有下面的結果,說明運行成功(安裝的過程很麻煩,需要耐心):

  下面就是用安裝Scrapy-Splash了,安裝的命令為:

docker run -p 8050:8050 scrapinghub/splash

  這里的話,我在環境配置上出了問題,再bios中把Intel Virtualization Technology已經設置為enable,但是再運行docker時還是出現了問題,在外部的因特爾虛擬化技術已經打開了,但是卻用不了virutualBox虛擬機。這里等到之后的博客,繼續為大家講解Splash。如果大家有知道原因的話,可以和我交流。



二:驗證碼的識別(1)

  現在,許多網站都用各種各樣的措施進行反爬蟲,其中一項就是用驗證碼。而且驗證碼現在已經發展得有很多種,而且交互式驗證碼已經越來越流行,需要鼠標操作的也越來越多,這也造成爬蟲的工作越發艱難,下面就先介紹如何用python識別常見的一種圖形驗證碼。

圖形驗證碼的識別

  圖形驗證碼是最早的驗證碼,很常見,一般有字母和數字組成,我們先保存網上的一些驗證碼圖片,如下:

(1)使用的識圖技術

  OCR技術:光學字符識別,是指通過掃描字符·,然后通過形狀將其翻譯成電子文本的過程。

(2)識圖用到的庫

  tesserocr庫:Python的一個OCR識別庫,是對tesseract做的一層封裝,因此需要先安裝tesseract,然后安裝tesserocr,安裝過程這里就不詳講了。

(3)識圖方法實現
import tesserocr
from PIL import Image

image = Image.open('1.jpg')
result = tesserocr.image_to_text(image)
print(result)

識別前后的圖片和結果如下:

  還有其他方法也可以識別驗證碼,就是用file_to_text()方法直接將圖片文件轉化為字符串,我們換張圖片如下:

print(tesserocr.file_to_text('2.jpg'))

識別前后的圖片和結果如下:

  我們看到識別的結果和我們想要的有所區別,但其實是線條阻擋了,在下面的博客中會介紹如何處理。

其他的驗證碼識別如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM