北京零基礎(chǔ)了解Python爬蟲
發(fā)布時(shí)間:2019-05-03首先爬蟲是什么?
網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機(jī)器人,在FOAF社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁追逐者),是一種按照一定的規(guī)則,自動(dòng)的抓取萬維網(wǎng)信息的程序或者腳本。
根據(jù)我的經(jīng)驗(yàn),要學(xué)習(xí)Python爬蟲,我們要學(xué)習(xí)的共有以下幾點(diǎn):
[li]
Python基礎(chǔ)知識(shí)[/li][li]
Python中urllib和urllib2庫的用法[/li][li]
Python正則表達(dá)式[/li][li]
Python爬蟲框架Scrapy[/li][li]
Python爬蟲更高級(jí)的功能[/li]
1. Python基礎(chǔ)學(xué)習(xí)
首先,我們要用Python寫爬蟲,肯定要了解Python的基礎(chǔ)吧,萬丈高樓平地起,不能忘啦那地基。
2. Python urllib和urllib2 庫的用法
urllib和urllib2庫是學(xué)習(xí)Python爬蟲最基本的庫,利用這個(gè)庫我們可以得到網(wǎng)頁的內(nèi)容,并對(duì)內(nèi)容用正則表達(dá)式提取分析,得到我們想要的結(jié)果。
3. Python 正則表達(dá)式
Python正則表達(dá)式是一種用來匹配字符串的強(qiáng)有力的武器。它的設(shè)計(jì)思想是用一種描述性的語言來給字符串定義一個(gè)規(guī)則,凡是符合規(guī)則的字符串,我們就認(rèn)為它“匹配”了,否則,該字符串就是不合法的。
4. 爬蟲框架Scrapy
如果你是一個(gè)Python高手,基本的爬蟲知識(shí)都已經(jīng)掌握了,那么就尋覓一下Python框架吧,我選擇的框架是Scrapy框架。這個(gè)框架有什么強(qiáng)大的功能呢?下面是它的官方介紹:
HTML, XML源數(shù)據(jù) 選擇及提取 的內(nèi)置支持
提供了一系列在spider之間共享的可復(fù)用的過濾器(即 Item Loaders),對(duì)智能處理爬取數(shù)據(jù)提供了內(nèi)置支持
通過 feed導(dǎo)出 提供了多格式(JSON、CSV、XML),多存儲(chǔ)后端(FTP、S3、本地文件系統(tǒng))的內(nèi)置支持
提供了media pipeline,可以 自動(dòng)下載 爬取到的數(shù)據(jù)中的圖片(或者其他資源)。
高擴(kuò)展性。您可以通過使用 signals ,設(shè)計(jì)好的API(中間件, extensions, pipelines)來定制實(shí)現(xiàn)您的功能。
內(nèi)置的中間件及擴(kuò)展為下列功能提供了支持:
[blockquote]cookies and session 處理
HTTP 壓縮
HTTP 認(rèn)證
HTTP 緩存
user-agent模擬
robots.txt
爬取深度限制
針對(duì)非英語語系中不標(biāo)準(zhǔn)或者錯(cuò)誤的編碼聲明, 提供了自動(dòng)檢測(cè)以及健壯的編碼支持。[/blockquote]
[li]
支持根據(jù)模板生成爬蟲。在加速爬蟲創(chuàng)建的同時(shí),保持在大型項(xiàng)目中的代碼更為一致。詳細(xì)內(nèi)容請(qǐng)參閱 genspider 命令。[/li][li]
針對(duì)多爬蟲下性能評(píng)估、失敗檢測(cè),提供了可擴(kuò)展的 狀態(tài)收集工具 。[/li][li]
提供 交互式shell終端 , 為您測(cè)試XPath表達(dá)式,編寫和調(diào)試爬蟲提供了極大的方便[/li][li]
提供 System service, 簡(jiǎn)化在生產(chǎn)環(huán)境的部署及運(yùn)行[/li][li]
內(nèi)置 Web service, 使您可以監(jiān)視及控制您的機(jī)器[/li][li]
內(nèi)置 Telnet終端 ,通過在Scrapy進(jìn)程中鉤入Python終端,使您可以查看并且調(diào)試爬蟲[/li][li]
Logging 為您在爬取過程中捕捉錯(cuò)誤提供了方便[/li][li]
支持 Sitemaps 爬取[/li][li]
具有緩存的DNS解析器[/li]
Python爬蟲入門(2):爬蟲基礎(chǔ)了解
1. 什么是爬蟲
爬蟲,即網(wǎng)絡(luò)爬蟲,大家可以理解為在網(wǎng)絡(luò)上爬行的一直蜘蛛,互聯(lián)網(wǎng)就比作一張大網(wǎng),而爬蟲便是在這張網(wǎng)上爬來爬去的蜘蛛咯,如果它遇到資源,那么它就會(huì)抓取下來。想抓取什么?這個(gè)由你來控制它咯。
比如它在抓取一個(gè)網(wǎng)頁,在這個(gè)網(wǎng)中他發(fā)現(xiàn)了一條道路,其實(shí)就是指向網(wǎng)頁的超鏈接,那么它就可以爬到另一張網(wǎng)上來獲取數(shù)據(jù)。這樣,整個(gè)連在一起的大網(wǎng)對(duì)這之蜘蛛來說觸手可及,分分鐘爬下來不是事兒。
2. 瀏覽網(wǎng)頁的過程
在用戶瀏覽網(wǎng)頁的過程中,我們可能會(huì)看到許多好看的圖片,比如 http://image.baidu.com/ ,我們會(huì)看到幾張的圖片以及百度搜索框,這個(gè)過程其實(shí)就是用戶輸入網(wǎng)址之后,經(jīng)過DNS服務(wù)器,找到服務(wù)器主機(jī),向服務(wù)器發(fā)出一個(gè)請(qǐng)求,服務(wù)器經(jīng)過解析之后,發(fā)送給用戶的瀏覽器 HTML、JS、CSS 等文件,瀏覽器解析出來,用戶便可以看到形形色色的圖片了。
因此,用戶看到的網(wǎng)頁實(shí)質(zhì)是由 HTML 代碼構(gòu)成的,爬蟲爬來的便是這些內(nèi)容,通過分析和過濾這些 HTML 代碼,實(shí)現(xiàn)對(duì)圖片、文字等資源的獲取。
3. URL的含義
URL,即統(tǒng)一資源定位符,也就是我們說的網(wǎng)址,統(tǒng)一資源定位符是對(duì)可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問方法的一種簡(jiǎn)潔的表示,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址?;ヂ?lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的URL,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它。
URL的格式由三部分組成:
①第一部分是協(xié)議(或稱為服務(wù)方式)。
②第二部分是存有該資源的主機(jī)IP地址(有時(shí)也包括端口號(hào))。
③第三部分是主機(jī)資源的具體地址,如目錄和文件名等。
爬蟲爬取數(shù)據(jù)時(shí)必須要有一個(gè)目標(biāo)的URL才可以獲取數(shù)據(jù),因此,它是爬蟲獲取數(shù)據(jù)的基本依據(jù),準(zhǔn)確理解它的含義對(duì)爬蟲學(xué)習(xí)有很大幫助。
4. 環(huán)境的配置
學(xué)習(xí)Python,當(dāng)然少不了環(huán)境的配置,最初我用的是Notepad++,不過發(fā)現(xiàn)它的提示功能實(shí)在是太弱了,于是,在Windows下我用了 PyCharm,在Linux下我用了Eclipse for Python,另外還有幾款比較優(yōu)秀的IDE,大家可以參考這篇文章 學(xué)習(xí)Python推薦的IDE 。好的開發(fā)工具是前進(jìn)的推進(jìn)器,希望大家可以找到適合自己的ID