python | 爬蟲筆記(一)- 開發環境配置

1.1 簡介

· 爬蟲是請求網站並提取數據的自動化程序
· 爬蟲能夠簡單分爲幾步:抓取頁面、分析頁面、存儲數據。

1.2 請求庫的安裝

· 在第一步抓取頁面的過程當中,咱們就須要模擬瀏覽器向服務器發出請求,涉及到的第三方庫有 Requests、Selenium、Aiotttp 等。
· Selenium自動化測試工具,利用它咱們能夠驅動瀏覽器執行特定的動做,如點擊、下拉等等操做,對於一些 JavaScript 渲染的頁面來講,此種抓取方式很是有效。
> 安裝Requests、Selenium
> 安裝ChromeDriver
#安裝後測試
from selenium import webdriver
browser = webdriver.Chrome()

· Requests 庫是一個阻塞式 HTTP 請求庫,發出請求後須要等待服務器響應,耗時。若是能夠在等待過程當中作一些其餘事情,好比進行請求調度、相應處理等,能夠提升效率。Aiohttp 就是這樣一個提供異步 Web 服務的庫,藉助於 async/await關鍵字寫法更加簡潔,架構更清晰。html

> 安裝aiohttp
pip3 install aiohttp==3.0.0

1.3 解析庫的安裝

抓取代碼後,下一步是從網頁中提取信息。易用的解析庫有 LXML、BeautifulSoup、PyQuery 等等,提供了很是強大的解析方法,如 XPath 解析、CSS 選擇器解析等等。
 
> 安裝上述三個包
> 安裝tesseract庫識別OCR

1.4 數據庫的安裝

關係型數據庫如 SQLite、MySQL、Oracle、SQL Server、DB2 等,其數據庫是以表的形式存儲。
非關係型數據庫如MongoDB、Redis,它們的存儲形式是鍵值對,存儲形式更加靈活。

1.4.1 MySQL

一個輕量級的關係型數據庫,以表的形式來存儲數據
brew install mysql
brew services start mysql
brew services stop mysql

1.4.2 MongoDB

由 C++ 語言編寫的非關係型數據庫,是一個基於分佈式文件存儲的開源數據庫系統,其內容存儲形式相似 Json 對象,它的字段值能夠包含其餘文檔,數組及文檔數組,很是靈活。
brew install mongodb
brew services start mongodb
sudo mongod
brew services stop mongodb
>下載可視化工具robo3t

1.4.3 Redis安裝

Redis 是一個基於內存的高效的非關係型數據庫
brew install redis
brew services start redis #啓動服務
redis-server /usr/local/etc/redis.conf
Mac 下 Redis 的配置文件路徑是 /usr/local/etc/redis.conf,能夠經過修改它來配置訪問密碼。

1.5 存儲庫的安裝

安裝python對應的庫
pip3 install pymysql, pymongo, redispy 
RedisDump 是一個用於 Redis 數據導入導出的工具,是基於 Ruby 實現的,因此要安裝 RedisDump 須要先安裝Ruby。

1.6 Web庫的安裝

python中web服務程序:Flask、Django 等,來開發網站,開發接口
須要web服務程序來搭建一些API接口,供爬蟲使用。
 
Flask 是一個輕量級的 Web 服務程序,簡單、易用、靈活,在本書中咱們主要用它來作一些 API 服務,
Tornado 是一個支持異步的Web框架,經過使用非阻塞 I/O 流,它能夠支撐成千上萬的開放鏈接。後續將用tornado+redis搭建一個ADSL撥號代理池。

1.7 APP爬取相關庫的安裝(須要的時候再裝)

除了網頁,爬蟲也能夠對app數據進行爬取。通常是經過請求服務器的接口來獲取的,主要要利用抓包技術。包括:Charles、MitmProxy、MitmDump,APP
 
Charles 來做爲主要的移動端抓包工具,用於分析移動 APP 的數據包,輔助完成 APP 數據抓取工做。
MitmProxy 是一個支持 HTTP 和 HTTPS 的抓包程序,相似 Fiddler、Charles 的功能,只不過它是一個控制檯的形式操做。
同時 MitmProxy 還有兩個關聯組件,一個是 MitmDump,它是 MitmProxy 的命令行接口,利用它咱們能夠對接 Python 腳本,用 Python 實現監聽後的處理。另外一個是 MitmWeb,它是一個 Web 程序,經過它咱們能夠清楚地觀察到 MitmProxy 捕獲的請求。
Appium 是移動端的自動化測試工具,相似於前面所說的 Selenium,利用它咱們能夠驅動 Android、iOS 等設備完成自動化測試,好比模擬點擊、滑動、輸入等操做,

1.8 爬蟲框架的安裝

利用框架,不需再關心某些功能的具體實現,只需關心爬取邏輯。能夠大大簡化代碼量,並且架構也會變得清晰,爬取效率也會高許多。

1.8.1 PySpider

PySpider 是國人 binux 編寫的強大的網絡爬蟲框架,它帶有強大的 WebUI、腳本編輯器、任務監控器、項目管理器以及結果處理器,同時它支持多種數據庫後端、多種消息隊列,另外它還支持 JavaScript 渲染頁面的爬取,
 
pip3 install
後直接在瀏覽器打開:http://localhost:5000/

1.8.2 Scrapy安裝

1.8.3 ScrapySplash安裝

ScrapySplash 是一個 Scrapy 中支持 JavaScript 渲染的工具
ScrapySplash 的安裝分爲兩部分,一個是是 Splash 服務的安裝,安裝方式是經過 Docker,安裝以後會啓動一個 Splash 服務,咱們能夠經過它的接口來實現 JavaScript 頁面的加載。另一個是 ScrapySplash 的 Python 庫的安裝,安裝以後便可在 Scrapy 中使用 Splash 服務。
 
安裝時需運行docker,完成後
http://localhost:8050 便可看到splash主頁

1.8.4 ScrapyRedis的安裝

1.9 部署庫的安裝

大規模抓取數據,分佈式爬蟲。一份代碼部署到多臺主機上協同運行
對於 Scrapy 來講,它有一個擴展組件叫作 Scrapyd,咱們只須要安裝 Scrapyd 便可遠程管理 Scrapy 任務,包括部署源碼、啓動任務、監放任務等操做。另外還有 ScrapydClient 和 ScrapydAPI 來幫助咱們更方便地完成部署和監聽操做。
另外還有一種部署方式就是 Docker 集羣部署,咱們只須要將爬蟲製做爲 Docker 鏡像,只要主機安裝了 Docker,就能夠直接運行爬蟲,而無需再去擔憂環境配置、版本問題。

1.9.1 Docker安裝

Docker 是一種容器技術,它能夠將應用和環境等進行打包,造成一個獨立的,相似於 iOS 的 APP 形式的「應用」,這個應用能夠直接被分發到任意一個支持 Docker 的環境中,經過簡單的命令便可啓動運行。Docker 是一種最流行的容器化實現方案。和虛擬化技術相似,它極大的方便了應用服務的部署;又與虛擬化技術不一樣,它以一種更輕量的方式實現了應用服務的打包。使用 Docker 可讓每一個應用彼此相互隔離,在同一臺機器上同時運行多個應用,不過他們彼此之間共享同一個操做系統。Docker 的優點在於,它能夠在更細的粒度上進行資源的管理,也比虛擬化技術更加節約資源。
 
docker鏡像加速器:阿里雲或DaoCloud

1.9.2 Scrapyd的安裝

Scrapyd 是一個用於部署和運行 Scrapy 項目的工具。有了它,你能夠將寫好的 Scrapy 項目上傳到雲主機並經過 API 來控制它的運行。但主要針對Linux主機

1.9.3 ScrapydClient的安裝

...
 

##本系列內容爲《python3爬蟲開發實戰》學習筆記。本系列博客列表以下:python

(零)學習路線mysql

(一)開發環境配置web

(二)爬蟲基礎redis

(三)基本庫使用sql

(四)解析庫使用mongodb

(五)數據存儲docker

(六)Ajax數據爬取數據庫

(七)動態渲染頁面爬取Selenium後端

持續更新...

對應代碼請見:..

相關文章
相關標籤/搜索