初識(shí)爬蟲(0)

untitled.png

爬蟲的這些文章就算是我的復(fù)習(xí)吧!今天開始??!

什么是爬蟲?

老師說,本質(zhì)上就是利用程序在網(wǎng)上獲得對我們有價(jià)值的數(shù)據(jù)。

我個(gè)人理解:
1、“蟲”
爬蟲就是這些能夠讓我們獲得數(shù)據(jù)的一類小程序,就是個(gè)工具。希望能夠掌握好,做一個(gè)遵守互聯(lián)網(wǎng)倫理道德的蟲蟲。
2、“網(wǎng)”
對互聯(lián)網(wǎng),html要有認(rèn)識(shí),才能掌握好工具。

瀏覽器的工作原理(5步):
在瀏覽器輸入網(wǎng)址(也可以叫URL)---- 瀏覽器向服務(wù)器傳達(dá)了我們想訪問某個(gè)網(wǎng)頁的需求(請求)---- 服務(wù)器把想要的網(wǎng)站數(shù)據(jù)發(fā)送給瀏覽器(響應(yīng))---- 瀏覽器會(huì)把這些用計(jì)算機(jī)語言寫的數(shù)據(jù)翻譯成你能看得懂的樣子(解析數(shù)據(jù))---- 我們在拿到的數(shù)據(jù)中挑選出對我們有用的數(shù)據(jù)(提取數(shù)據(jù))---- 我們(存儲(chǔ)數(shù)據(jù))。

爬蟲可以干什么?

上述人機(jī)互動(dòng)的過程中,爬蟲可以幫助我們完成絕大部分工作

1、爬蟲可以模擬瀏覽器去向服務(wù)器發(fā)出請求;
2、服務(wù)器響應(yīng)后,爬蟲程序還可以代替瀏覽器幫我們解析數(shù)據(jù);
3、爬蟲可以根據(jù)我們設(shè)定的規(guī)則自動(dòng)批量提取相關(guān)數(shù)據(jù);
4、爬蟲可以批量地把數(shù)據(jù)存儲(chǔ)到本地。

所以,人除了起心動(dòng)念,有邏輯地設(shè)計(jì)好規(guī)則后,剩下的爬蟲都能替我們干了。想想都舒服!

知識(shí)點(diǎn)1:requests庫

用途:
獲取數(shù)據(jù)
requests庫可以幫我們下載網(wǎng)頁源代碼、文本、圖片,甚至是音頻(“下載”本質(zhì)上是向服務(wù)器發(fā)送請求并得到響應(yīng))。

requests.get()方法
用法舉例:
import requests #引入requests庫
res = requests.get('URL')
#requests.get是在調(diào)用requests庫中的get()方法,它向服務(wù)器發(fā)送了一個(gè)請求,括號(hào)里的參數(shù)是所需數(shù)據(jù)所在的網(wǎng)址,然后服務(wù)器對請求作出了響應(yīng)。響應(yīng)返回的結(jié)果賦值在變量res上

知識(shí)點(diǎn)2:Response對象的常用屬性

因?yàn)镻ython是一門面向?qū)ο缶幊痰恼Z言。在爬蟲中,理解數(shù)據(jù)是什么對象非常、特別、以及極其重要。只有知道了數(shù)據(jù)是什么對象,才知道對象有什么屬性和方法可供我們操作。

判斷數(shù)據(jù)的對象類型方法是:
import requests
res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png')
print(type(res)) #打印變量res的數(shù)據(jù)類型
其結(jié)果是:<class 'requests.models.Response'>。這代表著:res是一個(gè)對象,屬于requests.models.Response類。res是一個(gè)Response對象,我們也就可以去了解它的相應(yīng)屬性和方法了。

Response對象的常用屬性

1、response.status_code
作用:
檢查請求是否成功
舉例:
import requests
res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png')
print(res.status_code) #打印變量res的響應(yīng)狀態(tài)碼,以檢查請求是否成功

1.png

2、response.content
作用:
能把Response對象的內(nèi)容以二進(jìn)制數(shù)據(jù)的形式返回,適用于圖片、音頻、視頻的下載
舉例:下載一張圖片
import requests # 引入requests庫
res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png') # 發(fā)出請求,并把返回的結(jié)果放在變量res中
pic = res.content # 把Reponse對象的內(nèi)容以二進(jìn)制數(shù)據(jù)的形式返回
photo = open('ppt.jpg','wb') # 新建一個(gè)文件ppt.jpg,這里的文件沒加路徑,它會(huì)被保存在程序運(yùn)行的當(dāng)前目錄下。圖片內(nèi)容需要以二進(jìn)制wb讀寫。在python基礎(chǔ)中open()函數(shù)里接觸過。
photo.write(pic) # 獲取pic的二進(jìn)制內(nèi)容
photo.close() # 關(guān)閉文件

3、response.text
作用:
可以把Response對象的內(nèi)容以字符串的形式返回,適用于文字、網(wǎng)頁源代碼的下載。
舉例:下載小說
import requests #引用requests庫
res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md') #下載《三國演義》第一回,我們得到一個(gè)對象,它被命名為res
novel=res.text #把Response對象的內(nèi)容以字符串的形式返回
print(novel[:800]) #打印小說(考慮到整章太長,只輸出800字)

4、response.encoding
作用:
能幫我們定義Response對象的編碼
舉例:
import requests #引用requests庫
res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md') #下載《三國演義》第一回,我們得到一個(gè)對象,它被命名為res
res.encoding='gbk' #定義Response對象的編碼為gbk
novel=res.text #把Response對象的內(nèi)容以字符串的形式返回
print(novel[:800]) #打印小說的前800個(gè)字
其打印出來的結(jié)果是亂碼。因?yàn)樵}目當(dāng)中設(shè)置的編碼規(guī)則默認(rèn)為utf-8,如果硬要以gbk形式定義它,就會(huì)出現(xiàn)最終的亂碼結(jié)果。
使用條件:
只有當(dāng)結(jié)果顯示為亂碼時(shí),才返回來試驗(yàn)以其他編碼方式定義并確認(rèn)結(jié)果。

Robots協(xié)議

是互聯(lián)網(wǎng)爬蟲的一項(xiàng)公認(rèn)的道德規(guī)范,它的全稱是“網(wǎng)絡(luò)爬蟲排除標(biāo)準(zhǔn)”(Robots exclusion protocol),這個(gè)協(xié)議用來告訴爬蟲,哪些頁面是可以抓取的,哪些不可以。

協(xié)議使用方法
查看網(wǎng)站的robots協(xié)議,在網(wǎng)站的域名后加上/robots.txt就可以了。
協(xié)議里最常出現(xiàn)的英文是Allow和Disallow,Allow代表可以被訪問,Disallow代表禁止被訪問。

好吧!出發(fā),沖浪去(膽子夠大,給自己點(diǎn)贊)!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容