Python3 網絡爬蟲(請求庫的安裝)
爬蟲可以簡單分為幾步:抓取頁面,分析頁面和存儲數據
在頁面爬取的過程中我們需要模擬瀏覽器向服務器發送請求,所以需要用到一些python庫來實現HTTP的請求操作,我們用到的第三方庫有requests Selenium 和aiohttp
requests 的安裝
相關鏈接:
- GitHub :https://github.com/requests/requests
- PypI:https://pypi.python.org/pypi/requests
- 官方文檔:http://www.python-requests.org
- 中文文檔:http://docs.python-request.org/zh_CN/latest
安裝:
最好用的安裝方式:pip 安裝
pip3 install requests
驗證是否安裝成功
打開控制台進入命令行模式,首先輸入python3 然后輸入import requests 如果什么報錯或提示說明安裝成功
#!/usr/bin/env python # -*- coding:utf-8 -*- #__author__=v_zhangjunjie02 import requests
Selenium 的安裝
selenium是一種自動化測試工具,利用它可以驅動瀏覽器執行特定的動作,如點擊,下拉等操作,對於一些JavaScript 渲染的頁面來說,這種抓取方式非常有效,下面來看看selenium 的安裝過程
相關鏈接
- 官方網站:http://www.seleniumhq.org
- GitHub :https://github.com/SeleniumHQ/selenium/tree/master/py
- PypI: https://pypi.python.org/pypi/selenium
- 官方文檔:http://selenium-python.readthedocs.io
- 中文文檔:http://selenium-python-zh.readthedocs.io
還是用pip 安裝
pip3 install selenium
驗證是否安裝成功:
打開控制台進入命令行模式,首先輸入python3 然后輸入import selenium 如果什么報錯或提示說明安裝成功
ChromeDriver 的安裝
前面我們已經安裝好了Selenium庫,但是它是一個自動的測試工具,需要瀏覽器來配合使用,下面我們是Chrome瀏覽器和ChromeDriver驅動的配置
首先下載chromedriver
隨后安裝chromedriver ,因為安裝了Chromedriver 才能驅動Chrome完成相應的操作
Chromedriver 相關鏈接
- 官方網站:https://sites.google.com/a/chromium.org/chromedriver
- 下載地址:https://chromedriver.storage.googleapis.com/index.html
安裝的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 的安裝
GeckoDriver 是Firefox 瀏覽器的驅動
它的安裝如下:
相關鏈接:
- GitHub:https://github.com/mozilla/geckodriver
- 下載地址:https://github.com/mozilla/geckodriver/releases
我們可以在github 上找到它的發行版本
環境變量配置同上
PhantomJS 的安裝
phantomjs 是一個無界面,可腳本編程的WebKit瀏覽器引擎,它原生支持多種Web 標准:DOM操作,css 選擇器,JSON ,Canvas 以及SVG
selenium支持phantomjs ,在運行的時候不會彈出一個瀏覽器,而且phantomjs 的運行效率也很高,還支持各種參數配置,使用非常方便:它的安裝如下:
相關鏈接:
- 官方網站:http://phantomjs.org
- 官方文檔:http://phantomjs.org/quick-start.html
- 下載地址:http://phantomjs.org/download.html
- API 接口說明:http://phantomjs.org/api/command-line.html
我們在官網上下載對應的安裝包后,需要將可執行文件添加進環境變量(環境變量的添加方法,同上)
驗證是否配置成功:在命令行輸入phantomjs-v 如果輸出對應的版本,說明配置成功
驗證是否安裝成功:
from selenium import webdriver
browser=webdriver.PhantomJS()
browser.get('https://www.baidu.com')
print(browser.current_url)
運行后不會有瀏覽器彈出,但是把url打印出來了,說明安裝成功了
aiohttp 的安裝
之前介紹的requests 庫是一個阻塞式HTTP請求庫,當我們發送一個請求后,程序會一直等待服務器響應,直到得到響應后程序才會做下一步處理,其實這個過程比較費時,如果程序可以在等待的過程中做一些其他的事情,如請求的調度,響應的處理等,那么爬取效率一定會大大提高
aiohttp 就是這樣一個提供異步web服務的庫,從python3.5 開始,Python加入了async/await 關鍵字,使的回調的方法更加直觀和人性化,aiohttp 的異步操作借助於 async/await 關鍵字的寫法變得更加簡潔,架構更加清晰,使用異步請求庫進行數據抓取時,會大大提高s效率(比如維護一個代理池,利用異步的方式檢測大量代理的運行情況,會極大提升效率)
它的安裝:
相關鏈接:
- 官方文檔:http://aiohttp.readthedocs.io/en/stable
- GitHub:https://github.com/aio-libs/aiohttp
- PyPI:https://pypi.python.org/pypi/aiohttp
pip 安裝
pip3 install aiohttp
另外,官方還推薦安裝如下兩個庫:一個是字符編碼檢測庫cchardet ,另一個是加速DNS的解析庫aiodns 安裝命令如下
pip3 install cchardet aiodns
測試安裝:
在python命令下導入 import aiohttp 如果沒有報錯,說明安裝成功
解析庫的安裝
抓取網頁之后,下一步就是從網頁中提取信息,提取信息的方式有多種多樣,可以使用正則來提取,但是寫起來相對比較繁瑣,這里還有很多強大的解析庫:如 lxml ,Beautiful Soup ,pyquery 等,此外還提供了大量的解析方法。如Xpath 解析和CSS 選擇器解析等,利用它,們我們可以便捷高效的從網頁中提取有用的信息
lxml 的安裝
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 的安裝
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 的安裝
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
驗證同上
tesserocr 的安裝
在爬蟲的過程中難免會遇到各種各樣的驗證碼,大多數驗證碼都是圖形驗證碼,這時候我們可以直接用ocr 來識別
tesserocr是python的一個OCR庫,但其實是對tesseract 做的一層Python API 的封裝,所以它的核心是tesseract ,因此在安裝tesserocr 之前,我們需要安裝tesseract
相關鏈接
- tesserocr GitHub :https://github.com/sirfz/tesserocr
- tesserocr PyPI : https://pypi.python.org/pypi/tesserocr
- tesseract 下載地址:http://digi.bib.uni-mannheim.de/tesseract
- tesseract GitHub :https://github.com/tesseract-ocr/tesseract
- tesseract 語言包:https://github.com/tesseract-ocr/tessdata
- tesseract 文檔:https://github.com/tesseract-ocr/tesseract/wiki/Documentation
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的安裝
MySql 是一個輕量級的關系型數據庫,
相關鏈接
- 官方網站:http://www.mysql.com/cn
- 下載地址:https://www.mysql.com/cn/downloads
- 中文教程:http://www.runoob.com/mysql/mysql-tutorial.html
mac 下安裝
brew instal mysql
啟動,停止和重啟MySQl服務的命令
sudo mysql.server start
sudo mysql.server stop
sudo mysql.server restart
MongoDB 的安裝
mongoDB 是由c++ 語言編寫的非關系型數據庫,是一個基於分布式文件存儲的開源數據庫系統,其內容存儲形式類似json 對象,他的字段值可以包含其他文檔,數組及文檔數組,非常靈活
mangoDB 支持多種平台,包括windows,linux ,MAX OS 在其官方網站上(http://www.mangodb.com/download-center)均可找到對應的安裝包
它的安裝過程
- 官方網站:https://www.mongodb.com
- 官方文檔:https://docs.mangodb.com
- GitHub:https://github.com/mongodb
- 中文教程:http://www.runoob.com/mongodb/mongodb-tutorial.html
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的安裝
redis 是一個基於內存非常高效的非關系型數據庫,它的安裝如下
相關鏈接
- 官方網站:https://redis.io
- 官方文檔:https://redis.io/documentation
- 中文文檔:http://www.redis.cn
- GItHub: https://github.com/antirez/redis
- 中文教程:http://www.runoob.com/redis/redis-tutorial.html
- Redis Desktop Manager:https://redisdesktop.com
- Redis Desktop Manager GitHub : https://github.com/uglide/RedisDesktopManager
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
存儲庫的安裝
PyMySql的安裝
相關鏈接
- GitHub :https://github.com/PyMySQL/PyMySQL
- 官方文檔:http://pymysql.readthedocs.io/
- PyPI: https://pypi.python.org/pypi/PyMySQL
pip安裝
pip3 install pymysql
PyMongo 的安裝
pip3 install pymongo
redis-py的安裝
pip3 install redis
RedisDump 的安裝
它是一個用於將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
如果這兩條命令可以成功調用,說明安裝成功
web庫的安裝
flask 的安裝
相關鏈接
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的安裝
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 的安裝
mitmproxy 是一個支持http和https 的抓包程序,類似於fiddler 和charles 只不過,它是通過控制台的形式去操作
此外mitproxy 還有兩個相關組件,mitmdump ,它是mitmproxy 的命令行接口,利用它可以對接python腳本,實現監聽后的處理;一個是mitmweb 它是一個web程序,通過它可以清楚的觀察到mitmproxy 捕獲的請求
它們的安裝如下:
- GitHub :https://github.com/mitmproxy/mitmproxy
- 官方網站:https://mitmproxy.org
- PyPI:https://pypi.python.org/pypi/mitmproxy
- 官方文檔:http://docs.mitmproxy.org
- mitmdump 腳本: http://docs.mitmproxy.org/en/stable/scripting/overview.html
- 下載地址:https://github.com/mitmproxy/mitmproxy/releases
- DockerHub: https://hub.docker.com/r/mitmproxy/mitmproxy
安裝方式一:mac 下安裝
pip3 install mitmproxy
如果不行執行
brew install mitmproxy
證書設置:
對於mitmproxy 來說,如果想捕獲https 請求需要設置證書,mitmproxy 在安裝后會提供一套CA證書,只要客戶端信任了mitmproxy 提供的證書,就可以通過mitmproxy 捕獲https請求
首先運行以下命令產生CA證書
mitmdump
接下來在用戶目錄下的.mitmproxy 目錄里找到CA 證書,證書一共有5個
Appium 的安裝
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
爬蟲框架的安裝
pyspidei 的安裝
- 官方文檔:http://docs.pyspider.org/
- PyPi:https://pypi.python.org/pypi/pyspider
- GitHub:https://github.com/binux/pyspider
- 官方教程:http://docs.pyspider.org/en/latest/tutorial
- 在線實例:http://demo.pyspider.org
准備工作:pyspider 是支持javascript 渲染的,而且這個過程依賴於PhantomJS 所以需要先安裝PhantomJS
使用pip 安裝
pip3 install pyspider
驗證安裝:
命令行執行
pyspider all
在瀏覽器中輸入http://localhost:5000/