爬蟲能夠簡單分爲幾步:抓取頁面,分析頁面和存儲數據javascript
在頁面爬取的過程當中咱們須要模擬瀏覽器向服務器發送請求,因此須要用到一些python庫來實現HTTP的請求操做,咱們用到的第三方庫有requests Selenium 和aiohttpcss
相關連接:html
安裝:java
最好用的安裝方式:pip 安裝node
pip3 install requestspython
驗證是否安裝成功mysql
打開控制檯進入命令行模式,首先輸入python3 而後輸入import requests 若是什麼報錯或提示說明安裝成功linux
#!/usr/bin/env python # -*- coding:utf-8 -*- #__author__=v_zhangjunjie02 import requests
selenium是一種自動化測試工具,利用它能夠驅動瀏覽器執行特定的動做,如點擊,下拉等操做,對於一些JavaScript 渲染的頁面來講,這種抓取方式很是有效,下面來看看selenium 的安裝過程android
相關連接ios
仍是用pip 安裝
pip3 install selenium
驗證是否安裝成功:
打開控制檯進入命令行模式,首先輸入python3 而後輸入import selenium 若是什麼報錯或提示說明安裝成功
前面咱們已經安裝好了Selenium庫,可是它是一個自動的測試工具,須要瀏覽器來配合使用,下面咱們是Chrome瀏覽器和ChromeDriver驅動的配置
首先下載chromedriver
隨後安裝chromedriver ,由於安裝了Chromedriver 才能驅動Chrome完成相應的操做
Chromedriver 相關連接
安裝的chromedriver 要和Chrome 的版本一致
1.下載完成後 將ChromeDriver 的可執行文件配置到環境變量下
在Windows下建議直接將chromedriver.exe 文件拖拽到Python的Script 目錄下,此外還能夠單獨配置其所在路徑到環境變量
在Linux 和Mac 下須要將可執行文件配置到環境變量,或將文件移動到所屬環境變量的文件裏
例如,要移動文件到/user/bin 目錄 ,首先須要在命令行模式下進入其文件的所在路徑,而後將其移動到/user/bin:
sudo mv chromedriver /user/bin
另外若是你的系統是Mac OS X EI Capitan 及更新版本的話,須要關閉Rootless 內核保護機制,具體參考http://www.pc6.com/edu/86809.html
固然,也能夠將ChromeDriver 配置到$PATH :首先,能夠將可執行文件放到某一目錄,目錄能夠任意選擇,例如將當前的可執行文件放到/user/local/chromedriver 目錄下,接下來在Linux 下修改~/.profile 文件,在Mac 下能夠修改~/.bash_profile文件添加以下內容
export PATH="$PATH:/usr/local/chromedriver"
保存後Linux下執行以下命令:
source ~/.profile
在mac 下執行:
source ~/.bash_profile
便可完成環境變量的添加
咱們在程序中測試,執行以下代碼:
from selenium import webdriver
browser=webdriver.Chrome()
運行以後,若是彈出一個空白的Chrome 瀏覽器,則證實全部的配置都沒有問題,若是沒有彈出,則須要檢查以前的每一步配置
若是彈出後閃退,多是Chrome 版本和chromedriver 版本不兼容致使的,更換對應的版本便可
GeckoDriver 是Firefox 瀏覽器的驅動
它的安裝以下:
相關連接:
咱們能夠在github 上找到它的發行版本
環境變量配置同上
phantomjs 是一個無界面,可腳本編程的WebKit瀏覽器引擎,它原生支持多種Web 標準:DOM操做,css 選擇器,JSON ,Canvas 以及SVG
selenium支持phantomjs ,在運行的時候不會彈出一個瀏覽器,並且phantomjs 的運行效率也很高,還支持各類參數配置,使用很是方便:它的安裝以下:
相關連接:
咱們在官網上下載對應的安裝包後,須要將可執行文件添加進環境變量(環境變量的添加方法,同上)
驗證是否配置成功:在命令行輸入phantomjs-v 若是輸出對應的版本,說明配置成功
驗證是否安裝成功:
from selenium import webdriver
browser=webdriver.PhantomJS()
browser.get('https://www.baidu.com')
print(browser.current_url)
運行後不會有瀏覽器彈出,可是把url打印出來了,說明安裝成功了
以前介紹的requests 庫是一個阻塞式HTTP請求庫,當咱們發送一個請求後,程序會一直等待服務器響應,直到獲得響應後程序纔會作下一步處理,其實這個過程比較費時,若是程序能夠在等待的過程當中作一些其餘的事情,如請求的調度,響應的處理等,那麼爬取效率必定會大大提升
aiohttp 就是這樣一個提供異步web服務的庫,從python3.5 開始,Python加入了async/await 關鍵字,使的回調的方法更加直觀和人性化,aiohttp 的異步操做藉助於 async/await 關鍵字的寫法變得更加簡潔,架構更加清晰,使用異步請求庫進行數據抓取時,會大大提升s效率(好比維護一個代理池,利用異步的方式檢測大量代理的運行狀況,會極大提高效率)
它的安裝:
相關連接:
pip 安裝
pip3 install aiohttp
另外,官方還推薦安裝以下兩個庫:一個是字符編碼檢測庫cchardet ,另外一個是加速DNS的解析庫aiodns 安裝命令以下
pip3 install cchardet aiodns
測試安裝:
在python命令下導入 import aiohttp 若是沒有報錯,說明安裝成功
抓取網頁以後,下一步就是從網頁中提取信息,提取信息的方式有多種多樣,可使用正則來提取,可是寫起來相對比較繁瑣,這裏還有不少強大的解析庫:如 lxml ,Beautiful Soup ,pyquery 等,此外還提供了大量的解析方法。如Xpath 解析和CSS 選擇器解析等,利用它,們咱們能夠便捷高效的從網頁中提取有用的信息
lxml 是python的一個解析庫,支持HTML 和XML 的解析,支持Xpath 解析方式,並且解析效率很是高,它的安裝以下:
相關連接:
官方網站:http://lxml.de
GitHub: https://github.com/lxml/lxml
PyPI: https://pypi.python.org/pypi/lxml
mac 下安裝
使用pip 安裝:pip3 install lxml
若是產生錯誤,能夠執行以下命令將必要的類庫安裝
xcode-select --install
以後再從新嘗試pip 安裝就沒有問題了
lxml 是一個很是重要的庫,後面的Beautiful Soup Scrapy 都要用到此庫,因此必定要安裝成功
Beautiful soup 是python的一個HTML 或XML的解析庫,咱們能夠用它來方便的從網頁中提取數據,它擁有強大的API和多樣的解析方式,它的安裝以下:
相關連接:
官方文檔:https://www.crummy.com/software/BeautifulSoup/bs4/doc
中文文檔:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh
PyPi:https://pypi.python.org/pypi/beautifulsoup4
準備工做:
Beautiful soup 的HTML ,XML的解析庫依賴於 lxml 庫,因此安裝以前確保已經安裝成功了 lxml 庫
pip 安裝
pip3 install beautifulsoup4
驗證安裝:
from bs4 import BeautifulSoup
soup=BeautifulSoup('<p>Hello</p>','lxml')
print(soup.p.string)
運行結果以下:
Hello
若是一致,說明安裝成功
⚠️注意,這裏咱們雖然安裝的是beautifulsoft4 這個包,可是引入的時候卻引入bs4, 這是由於這個包源代碼自己的庫文件夾的名稱就是bs4
pyquery 一樣是一個強大的網頁解析工具,它提供了相似 jQuery 相似的語法來解析HTML文檔,支持css 選擇器,使用很是方便,它的安裝以下:
相關連接:
GitHub:https://github.com/gawel/pyquery
PyPI : https://pypi.python.org/pypi/pyquery
官方文檔:http://pyquery.readthedocs.io
pip 安裝
pip3 install pyquery
驗證同上
在爬蟲的過程當中不免會遇到各類各樣的驗證碼,大多數驗證碼都是圖形驗證碼,這時候咱們能夠直接用ocr 來識別
tesserocr是python的一個OCR庫,但實際上是對tesseract 作的一層Python API 的封裝,因此它的核心是tesseract ,所以在安裝tesserocr 以前,咱們須要安裝tesseract
相關連接
Mac 下安裝
brew 的安裝參考:https://brew.sh/
或在終端執行/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
首先使用Homebrew 安裝ImageMagick 和tesseract
brew install imagemagick
brew install tesseract --all-languages
接下來咱們再安裝tesserocr
pip3 install tesserocr pillow
這樣咱們便完成了tessercor 的安裝
MySql 是一個輕量級的關係型數據庫,
相關連接
mac 下安裝
brew instal mysql
啓動,中止和重啓MySQl服務的命令
sudo mysql.server start
sudo mysql.server stop
sudo mysql.server restart
mongoDB 是由c++ 語言編寫的非關係型數據庫,是一個基於分佈式文件存儲的開源數據庫系統,其內容存儲形式相似json 對象,他的字段值能夠包含其餘文檔,數組及文檔數組,很是靈活
mangoDB 支持多種平臺,包括windows,linux ,MAX OS 在其官方網站上(http://www.mangodb.com/download-center)都可找到對應的安裝包
它的安裝過程
Mac 下安裝
brew install mongodb
而後新建一個文件夾/data/db 用於存放MongoDB 數據
這裏啓動MongoDB 服務的命令以下
brew services start mongodb
sudo mongod
中止和重啓MongoDB 服務的命令分別是
brew services stop mongodb
brew services restart mongodb
這裏推薦一個可視化工具 RoboMongo/Robo 3T 官方網站爲:https://robomongo.org/下載連接:https://robomongo.org/download
redis 是一個基於內存很是高效的非關係型數據庫,它的安裝以下
相關連接
mac 下安裝
brew install redis
啓動Redis 服務的命令以下
brew services start redis
redis-server /use/local/etc/redis.conf
在mac 下Redis 的配置文件路徑是/user/local/etc/redis.conf 能夠經過修改它來配置訪問密碼
修改配置文件後,須要重啓Redis 服務,中止和重啓Redis 服務的命令分別以下
brew services stop redis
brew services restart redis
另外,在mac 下能夠安裝Redis Desktop Manager 可視化管理工具來管理Redis
相關連接
pip安裝
pip3 install pymysql
pip3 install pymongo
pip3 install redis
它是一個用於將redis 數據導入導出的工具,基於Ruby實現,要想安裝它先的安裝Ruby、
1.相關連接:
GitHub :https://github.com/delano/redis-dump
官方文檔:http://delanotes.com/redis-dump
2.安裝Ruby
參考:http://www.ruby-lang.org/zh_cn/documentation
3.gem 安裝
gem install redis-dump
4.驗證安裝
redis-dump
redis-load
若是這兩條命令能夠成功調用,說明安裝成功
相關連接
Github:https://github.com/pallets/flask
官方文檔:http://flask.pocoo.org
中文文檔:http://docs.jinkan.org/docs/flask
PyPi: https://pypi.python.org/pypi/Flask
安裝
pip3 install flask
tornado是一個支持異步的web框架,經過使用非阻塞I/O 流,它能夠支持成千上萬的開放連接,效率很是高
1.相關連接
GitHub : https://github.com/tornadoweb/tornado
PyPI : https://pypi.python.org/pypi/tornado
官方文檔: http://www.tornadoweb.org
安裝
pip install tornado
mitmproxy 是一個支持http和https 的抓包程序,相似於fiddler 和charles 只不過,它是經過控制檯的形式去操做
此外mitproxy 還有兩個相關組件,mitmdump ,它是mitmproxy 的命令行接口,利用它能夠對接python腳本,實現監聽後的處理;一個是mitmweb 它是一個web程序,經過它能夠清楚的觀察到mitmproxy 捕獲的請求
它們的安裝以下:
安裝方式一:mac 下安裝
pip3 install mitmproxy
若是不行執行
brew install mitmproxy
對於mitmproxy 來講,若是想捕獲https 請求須要設置證書,mitmproxy 在安裝後會提供一套CA證書,只要客戶端信任了mitmproxy 提供的證書,就能夠經過mitmproxy 捕獲https請求
首先運行如下命令產生CA證書
mitmdump
接下來在用戶目錄下的.mitmproxy 目錄裏找到CA 證書,證書一共有5個
Appium是移動端的自動化測試工具,利用它能夠驅動Android 和 IOS 等設備完成自動化的測試 其官方網站爲:http://appium.io
1.相關連接:
GitHub : https://github.com/appium/appium
官方網站:http://appium.io
官方文檔:http://appium.io/introduction.html
下載連接:https://github.com/appium/appium-desktop/release
Python Client :https://github.com/appium/python-clent
安裝appium
appium 負責驅動移動端來完成一系列操做對於ios 來講,它使用蘋果的UIAutonation 來實現驅動,對於Android 來講,它使用UIAutomator 和Selendroid 來實現驅動
同時Appiumd 至關於一個服務器,咱們能夠向它發送一些操做指令,他會根據不一樣的指令對移動端設備完成不一樣的操做
安裝Appium 有兩種方式,一種是直接下載Appium Desktop 來安裝,另外一種是經過node.js 來安裝
Appium Desktop
連接地址:https://github.com/appium/appium-desktop/releases
推薦使用node.js 安裝
使用node.js 安裝先要安裝node.js 參考連接:http://www.runoob.com/nodejs/nodejs-install-setup.html
而後使用命令npm install -g appium 安裝,這條命令執行完後就完成了appium 的安裝
Android 開發環境的配置
Android 環境的配置
下載Android Studio (https://developer.android.com/studio/index.html?hl=zh-cn
安卓SDK的下載
下載完Android Studio後直接在Android 的設置頁面勾選要安裝的SDK 便可
另外須要配置下環境變量,參考地址:https://developer.android.com/studio/intro/index.html
準備工做:pyspider 是支持javascript 渲染的,並且這個過程依賴於PhantomJS 因此須要先安裝PhantomJS
使用pip 安裝
pip3 install pyspider
驗證安裝:
命令行執行
pyspider all
在瀏覽器中輸入http://localhost:5000/