爬蟲能夠簡單分爲三步驟:請求數據、解析數據和存儲數據 。主要的一些工具以下:javascript
requestjava
一個阻塞式http請求庫。git
Seleniumgithub
Selenium是一個自動化測試工具,能夠驅動瀏覽器執行特定的動做,如點擊,下拉等操做。對於一些javascript渲染的頁面,這種抓取方式很是有效,作到可見便可爬。web
ChromeDriver、GeckoDriverredis
只有安裝了ChromeDriver和GeckoDriver以後,Selenium才能驅動Chrome或者Firefox瀏覽器來作相應的網頁抓取。固然,須要關閉瀏覽器的更新功能,避免版本不一致。數據庫
PhantomJS編程
PhantomJS是一個無界面的、可腳本編程的WebKit瀏覽器引擎,原生支持多種Web標準:Dom操做、CSS選擇器、JSON、Canvas和SVG。Selenium支持PhantomJS,在運行的時候不會再彈出一個瀏覽器。windows
aiohttp後端
相比於requests,aiohttp是一個提供異步Web服務的庫。
lxml
lxml是Python的一個解析庫,支持HTML和XML的解析,支持XPath解析方式,並且解析效率高。
Beautiful Soup
Beautiful Soup能夠方便的從網頁中提取數據,擁有強大的API和多樣的解析方式,在解析時依賴解析器,如:lxml。
pyquery
pyquery提供了和jQuery相似的語法來解析HTML文檔,支持CSS選擇器,使用方便。
tesserocr
tesserocr是Python的一個OCR識別庫,是對tesseract作的一層Python API封裝,所以,在安裝tesserocr以前,須要先安裝tesseract。pip3 install tesserocr pillow命令因爲網絡安裝不了時,能夠下載相應的.whl文件,進行pip3 install XXX.whl命令安裝tesserocr,再pip3 install pillow。
若是想將數據存儲到MySQL、MongoDB或Redis中,則須要分別藉助PyMySQL、PyMongo、redis-py或者RedisDump來操做。
Web相關
Flask
Flask是一個輕量級的Web服務程序,簡單、易用、靈活,能夠用來作一些API服務。咱們可使用Flask+Redis維護動態代理池和Cookies池。
Tornado
Tornado是一個支持異步的Web框架,經過使用非阻塞I/O流,能夠支撐成千上萬的開放鏈接,效率很是高。
Charles
Charles是一個網絡抓包工具,相比Fiddler,功能更強大,並且跨平臺支持得更好
mitmproxy
mitmproxy是一個支持HTTP和HTTPS的抓包程序,相似Fiddler、Charles的功能,只不過經過控制檯的形式操做。另外,mitmproxy還有兩個關聯組件,一個是mitmdump,它是mitproxy的命令行接口,利用它能夠對接Python腳本,實現監聽後的處理;另外一個是mitmweb,它是一個Web程序,經過它以清楚地觀察到mitmproxy捕獲的請求。
Appium
Appium是移動端的自動化測試工具,相似於Selenium,利用它能夠驅動Android、IOS等設備完成自動化測試,好比模擬點擊、滑動、輸入等操做。
pyspider
pyspider是國人binux編寫的強大網絡爬蟲框架,帶有強大的WebUI、腳本編輯器、任務監控器、項目管理器以及結果處理器,同時支持多種數據庫後端、多種消息隊列,另外還支持javascript渲染頁面的爬取。
Scrapy
Scrapy是一個十分強大的爬蟲框架,依賴的庫比較多,至少須要依賴有Twisted14.0、lxml3.4和pyOpenSSL 0.14。在不一樣的平臺環境下,所依賴的庫也各不相同,因此在安裝以前,最好確保把一些基本庫安裝好。
Scrapy-Splash
Scrapy-Splash是一個Scrapy中支持javascript渲染的工具。
Scrapy-Redis
Scrapy-Redis是Scrapy的分佈式擴展模塊,經過它能夠方便地實現Scrapy分佈式爬蟲的搭建。
Docker、Scrapyd、Scrapyd-Client、Scrapyd API、Scrapyrt、Gerapy等。