本文列出了使用python進(jìn)行爬蟲時(shí)所需的常用庫和工具的安裝過程,基本上只有幾行命令行的功夫就可以搞定,還是十分簡單的。
一、UrlLib 與 Re
這兩個(gè)庫是python的內(nèi)置庫,若系統(tǒng)中已經(jīng)成功安裝了python的話,這兩個(gè)庫一般是沒有什么問題的。
驗(yàn)證
打開命令行,進(jìn)入python交互模式。使用以下命令:
import urllib
import urllib.request
urllib.request.urlopen(‘http://www.baidu.com’)
也就是先導(dǎo)入urllib以及其下的request庫,并傳入百度的網(wǎng)址進(jìn)行測試如下圖:
回車后返回了值,說明這個(gè)庫是可以正常使用的。
再導(dǎo)入re,沒有報(bào)錯(cuò),那么一切ok。如下圖:
二、Requests
這個(gè)庫要的安裝要用到第三方工具(pip)
首先進(jìn)入命令行模式,進(jìn)行pip的安裝:
pip3 install requests
驗(yàn)證
進(jìn)入python交互模式,輸入以下命令并回車:
import requests
requests.get(‘http://www.baidu.com’)
得到返回值,說明這個(gè)庫可以正常使用了。
三、Selenium
這是一個(gè)用來驅(qū)動(dòng)瀏覽器的庫,主要用來做自動(dòng)化測試,可以拿到網(wǎng)頁經(jīng)過js渲染后的內(nèi)容。
首先進(jìn)入python交互模式,看看這個(gè)庫是否已經(jīng)安裝。輸入以下命令并回車:
import selenium
如果看到了上圖的報(bào)錯(cuò),恭喜你,咱們還沒安裝呢。
那么就用pip來安裝吧~
使用
命令行模式,輸入以下命令并回車:
如果所示,安裝完畢。
驗(yàn)證
在python交互模式下,輸入以下命令并回車:
import selenium
如果沒有出現(xiàn)之前的報(bào)錯(cuò),就說明安裝成功了。
接下來繼續(xù)測試一下這個(gè)庫中的命令。
在python交互模式下,輸入以下命令并回車:
from selenium import webdriver
driver = webdriver.Chrome()
這里試圖創(chuàng)建一個(gè)瀏覽器對(duì)象并且直接啟動(dòng)
Chrome瀏覽器,但是現(xiàn)在缺少一個(gè)Chrome驅(qū)動(dòng)器,因此報(bào)錯(cuò)了。所以接下來我們需要安裝這個(gè)ChromeDriver。
ChromeDriver的安裝
在搜索引擎中搜索ChromeDriver,一般第一個(gè)就是其官網(wǎng),咱們進(jìn)去看看。
箭頭所指的地方發(fā)布了最新版本,咱們下它!
進(jìn)入之后看到有許多版本,我們下載windows那個(gè)。
把下載好的壓縮包解壓后會(huì)得到一個(gè)可執(zhí)行文件,我們把它解壓到某個(gè)已經(jīng)配置好環(huán)境變量的路徑下(比如Anaconda3目錄下)
或者把這個(gè)exe放到Scipts文件夾下也是可以的,那么它將和pip處在同一級(jí)的目錄下。
以上的目錄都是已經(jīng)配置好環(huán)境變量的,那么現(xiàn)在系統(tǒng)就可以找到這個(gè)chromedriver了。在命令行模式下,輸入以下命令并回車:
chromedriver
可以看到已經(jīng)ok了。
現(xiàn)在再次進(jìn)行剛才的嘗試,在python
交互模式下,輸入以下命令并回車:
from selenium import webdriver
driver = webdriver.Chrome()
如果你看到瀏覽器一閃而過,并且命令行窗口中給出報(bào)錯(cuò)信息,別抓狂,這可能是由于chrome的版本不匹配導(dǎo)致的。 所以就需要換一個(gè)版本使其兼容。
http://chromedriver.chromium.org/downloads進(jìn)入以上的網(wǎng)址(也就是之前下載chromedriver的地方),并往下瀏覽,可以看到更早時(shí)候的版本。選擇一個(gè)更低的版本進(jìn)行下載,并重復(fù)之前的步驟,最后替換掉之前下載的exe文件。那么這就完成了一個(gè)版本的更換。
那么現(xiàn)在再試一次吧~
在python交互模式下,輸入以下命令并回車:
from selenium import webdriver
driver = webdriver.Chrome()
終于乖乖蹦出來了一個(gè)瀏覽器!
繼續(xù)測試:
python
交互模式下,輸入以下命令并回車:
driver.get(‘
http://www.baidu.com’)
可以看到,該瀏覽器跳轉(zhuǎn)到了百度的界面。
再換個(gè)網(wǎng)址試試?
python
交互模式下,輸入以下命令并回車:
driver.get(‘
https://www.python.org’)
可以看到,瀏覽器又跳轉(zhuǎn)到了python的官網(wǎng)。
緊接著我們使用page_source語句就可以打印出網(wǎng)頁的源代碼了:
driver.page_source
可以看到窗口中打印出了一堆代碼,反正我是看得
密集恐懼癥都犯了。
其實(shí)這就是上面python官網(wǎng)頁面的源代碼了。
總之~通過selenium庫,我們就可以拿到j(luò)s渲染過的網(wǎng)頁的內(nèi)容了。
四、PhantomJs
現(xiàn)在我們覺得在做爬蟲時(shí),一直存在一個(gè)瀏覽器的界面擺在那兒太不方便了,有沒有一個(gè)沒有瀏覽器界面的運(yùn)行模式呢?
PhantomJs就是一個(gè)安靜的美男子(無界面的瀏覽器)。有了它,就可以讓它在后臺(tái)靜默的運(yùn)行,這樣爬蟲時(shí)我們只需要看著命令行就行了。
現(xiàn)在我們到官網(wǎng)去下載它:
http://phantomjs.org/download.html
你你自己去搜索也行~
找到windows版本,點(diǎn)擊就可以下載了壓縮包了。
下載好之后解壓(隨便解壓到哪兒),解壓后可以看到,在bin目錄下有一個(gè)exe文件。
現(xiàn)在我們要把它配置到環(huán)境變量中去:
計(jì)算機(jī)–>右鍵–>屬性–>高級(jí)系統(tǒng)設(shè)置–>環(huán)境變量
編輯用戶變量中的PATH:
把exe文件所在bin的目錄拷貝到PATH編輯欄的最后(注意與之前的路徑用半角的分號(hào)隔開)。
確定后就配置好環(huán)境變量了。
現(xiàn)在在
命令行模式下輸入phantomjs并回車:
竟然不行,有點(diǎn)尷尬啊,我去重啟試試……
(1分鐘后)我又回來了,現(xiàn)在再試一次看看:
果然重啟后就可以了,不知道是否一定要重啟呢?
如上圖,現(xiàn)在就進(jìn)入了交互模式,現(xiàn)在試試執(zhí)行一些js程序,因?yàn)檫@里此時(shí)相當(dāng)于一個(gè)網(wǎng)絡(luò)控制臺(tái)。
console.log(‘Hello World!’)
使用ctrl+C可以切換回命令行模式。
現(xiàn)在使用
python交互模式:
依次使用如下命令:
from selenium import webdriver
driver=webdriver.PhantomJS()
driver.get(‘
http://www.baidu.com’)
driver.page_source
可以看到,讓我密集恐懼癥的東西又被打印出來了,這就是百度首頁的源代碼了,比起上次,這次我們并沒有看到瀏覽器的窗口,這就是PhantomJs的好處了。
五、lxml
lxml是python的一個(gè)解析庫,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。
安裝方法:在命令行模式下,輸入pip3 install lxml并回車。
如果已經(jīng)安裝好會(huì)出現(xiàn)上圖提示,如果未安裝過,會(huì)執(zhí)行安裝過程(如下圖),稍微等待就好了。
未順利安裝
( 順利安裝可以跳過此節(jié))
如果未fan墻或是網(wǎng)絡(luò)原因?qū)е掳惭b過程過慢,那么去搜索lxml:
可以選擇一個(gè)whl來下載并且使用pip安裝,前提是必須安裝whell庫(使用pip3 install wheel命令)。
安裝過程:
先下載好whl文件(注意下載的是對(duì)應(yīng)win系統(tǒng)的),在文件夾中顯示,并右鍵–>屬性–>安全,可以看到文件的完整路徑。
把這個(gè)路徑復(fù)制下來,在命令行中執(zhí)行命令:
pip3 install +路徑。
(在命令行窗口屬性中勾選快速編輯模式,可以直接在光標(biāo)處右擊就可以完成復(fù)制)
注意要先安裝wheel庫:pip3 install wheel
如果出現(xiàn)lxml-3.7.3-cp35-cp35m-win32.whl is not a supported wheel on this platform.紅色字體(如上圖),則是*.whl文件選擇錯(cuò)誤,重新下載對(duì)應(yīng)的*.whl文件重新安裝即可(32位或64位看清楚再下載)。
六、Beautiful Soup
Beautiful Soup 是一個(gè)可以從HTML或XML文件中提取數(shù)據(jù)的Python庫,它能夠通過你喜歡的轉(zhuǎn)換器實(shí)現(xiàn)慣用的文檔導(dǎo)航,查找,修改文檔的方式,Beautiful Soup會(huì)幫你節(jié)省數(shù)小時(shí)甚至數(shù)天的工作時(shí)間,就如它的名字一樣“美麗”~
注意,這個(gè)庫是依賴在lxml庫下的,所以安裝這個(gè)庫前必須已經(jīng)完成了上一步的安裝。
安裝過程:在命令行輸入
pip3 install beautifulsoup4
并回車(別漏了4,這是個(gè)版本號(hào))。
檢查:
在python交互模式下,輸入命令并回車:
from bs4 import BeautifulSoup
soup=BeautifulSoup(’’,‘lxml’)
這是創(chuàng)建一個(gè)beautifulsoup對(duì)象并且調(diào)用方法進(jìn)行解析。
沒有報(bào)錯(cuò)的話就說明一切順利啦~
七、PyQuery
前端大大們的福音來了,PyQuery 來了,乍聽名字,你一定聯(lián)想到了 jQuery,如果你對(duì) jQuery 熟悉,那么 PyQuery 來解析文檔就是不二之選。PyQuery 是 Python 仿照 jQuery 的嚴(yán)格實(shí)現(xiàn)。語法與 jQuery 幾乎完全相同,所以不用再去費(fèi)心去記一些奇怪的方法了。不熟悉也沒關(guān)系,它依然很友好。
安裝:
命令行模式下輸入并回車:
pip3 install pyquery
如上圖就已經(jīng)安裝完畢了。
驗(yàn)證:
進(jìn)入python交互模式,依次輸入以下命令并回車:
from pyquery import PyQuery as pq
doc=pq(’’)
doc=pq(‘Hello’)
result=doc(‘html’).text()
result
可以看到我們寫入的內(nèi)容被成功打印了。
八、PyMySQL
PyMySQL 是在 Python3.x 版本中用于連接 MySQL 服務(wù)器的一個(gè)庫,Python2中則使用mysqldb。
安裝:
在命令行模式下輸入
pip3 install pymysql
并回車。
很順利吧。驗(yàn)證過程需要與數(shù)據(jù)庫進(jìn)行交互,這部分暫時(shí)略過。
九、PyMongo
PyMongo是一個(gè)用于MongoDB的Python工具,也是一個(gè)被推薦的Python操作MongoDB數(shù)據(jù)庫的方式。
安裝:
首先檢查MongoDB服務(wù)是否已經(jīng)啟動(dòng)。
在
命令行模式下執(zhí)行命令: pip3 install pymongo
驗(yàn)證:
在
python交互模式下依次執(zhí)行以下命令:
import pymongo
client=pymongo.MongoClient(‘localhost’)
db=client[‘newtestdb’]
db[‘table’].insert({‘name’:‘Bob’})
db[‘table’].find_one({‘name’:‘Bob’})
最后不報(bào)錯(cuò)并返回信息,說明可以正常使用了。
十、Redis
這也是一個(gè)非關(guān)系型數(shù)據(jù)庫,用key-value形式進(jìn)行存儲(chǔ),它主要用在分布式爬蟲,維護(hù)一個(gè)爬取隊(duì)列,它的運(yùn)行效率還是很高的。
安裝:
在命令行模式下執(zhí)行
pip3 install redis
驗(yàn)證:
在
python交互模式下依次執(zhí)行以下命令:
import redis
r=redis.Redis(‘localhost’,6379)
r.set(‘name’,‘Bob’)
r.get(‘name’)
如上圖,寫入和獲取數(shù)據(jù)一切順利。
十一、Flask
這是一個(gè)Web庫。后續(xù)做一些代理設(shè)置的時(shí)候可能會(huì)用到這個(gè)庫,因?yàn)槲覀円O(shè)置一個(gè)Web服務(wù)器,用它來設(shè)置一些代理的獲取、存儲(chǔ)之類的接口。
安裝:
依然十分簡單,在命令行模式下執(zhí)行以下命令:
pip3 install flask
十二、Django
這個(gè)庫是一個(gè)Web服務(wù)器框架,它提供了一個(gè)完整的后臺(tái)管理,以及一些模板、接口、路由,也可以用它來做一個(gè)完整的網(wǎng)站。
安裝:
依然依然十分簡單,在命令行模式下執(zhí)行以下命令:
pip3 install django
搞定!
驗(yàn)證:
在
python交互模式下執(zhí)行import django
如果沒有報(bào)錯(cuò)就說明成功了。
十三、Jupyter
可以理解為一個(gè)強(qiáng)大的記事本,它運(yùn)行在網(wǎng)頁端,你可以在記事本里寫上些代碼和調(diào)試…形成一個(gè)非常方便的代碼紀(jì)錄。
安裝:
依然依然依然十分簡單,在命令行模式下執(zhí)行以下命令:
pip3 install jupyter
安裝完后可以看到在Scipts文件夾下多了這么些相關(guān)的東東:
驗(yàn)證:
在
命令行模式下直接執(zhí)行
jupyter notebook
可以發(fā)現(xiàn)這時(shí)跳出了一個(gè)新的網(wǎng)頁:
這個(gè)網(wǎng)頁列出了當(dāng)前執(zhí)行目錄下的一些文件信息。
我們甚至可以直接在網(wǎng)頁上新建一個(gè)代碼文件:
在編輯框中鍵入代碼并執(zhí)行(左邊的小按鈕),可以看到代碼順利執(zhí)行了,它使用的解釋器就是其所在目錄的python3解釋器。
那么我們?cè)僭囋?,按下鍵盤的"B"鍵可以新建一個(gè)代碼塊,我們運(yùn)行以下的程序:
import requests
response = requests.get(‘
http://www.baidu.com’)
print(response.text)
執(zhí)行后可以看到,打印出了密集…的東西。
厲害吧,在上面還可以進(jìn)行Markdown等其他模式的編程…等等。