第1課 認識爬蟲

一绿贞、認識爬蟲

1. 什么是網(wǎng)絡(luò)爬蟲?

百度詞條解釋:網(wǎng)絡(luò)爬蟲(又稱為網(wǎng)頁蜘蛛誓酒,網(wǎng)絡(luò)機器人樟蠕,在FOAF社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁追逐者)靠柑,是一種按照一定的規(guī)則寨辩,自動地抓取萬維網(wǎng)信息的程序或者腳本。另外一些不常使用的名字還有螞蟻歼冰、自動索引靡狞、模擬程序或者蠕蟲。

通俗地講隔嫡,就是利用程序在網(wǎng)上拿到對我們有價值的數(shù)據(jù)甸怕。

2. 爬蟲可以做什么呢?

爬蟲能做很多事腮恩,能做商業(yè)分析梢杭,也能做生活助手,這是個人利用爬蟲所做到的事情秸滴。而公司武契,同樣可以利用爬蟲來實現(xiàn)巨大的商業(yè)價值。比如你所熟悉的搜索引擎——百度和谷歌荡含,它們的核心技術(shù)之一也是爬蟲咒唆,而且是超級爬蟲。

3. 爬蟲的工作原理是什么释液?

4. 爬蟲的四個步驟:


二全释、獲取數(shù)據(jù)

1. 獲取數(shù)據(jù):我們將會利用一個強大的庫——requests來獲取數(shù)據(jù)。

2. 在電腦上安裝requests庫的方法:

在Mac電腦里打開終端軟件(terminal)误债,輸入pip3 install requests浸船,然后點擊enter即可。

在Windows電腦里叫命令提示符(cmd)寝蹈,輸入pip install requests 即可李命。

打開這個網(wǎng)址, http://www.lfd.uci.edu/~gohlke/pythonlibs 在這個網(wǎng)站上面有很多 python 的第三方庫文件躺盛,我們按 ctrl+f 搜索很容易找到 requests 项戴。(怎么安裝第三方庫?)

3. Request.get()方法:

>>>import requests

#引入requests庫

>>>res = requests.get('URL')

#requests.get是在調(diào)用requests庫中的get()方法槽惫,它向服務(wù)器發(fā)送了一個請求周叮,括號里的參數(shù)是你需要的數(shù)據(jù)所在的網(wǎng)址辩撑,然后服務(wù)器對請求作出了響應(yīng)。

#我們把這個響應(yīng)返回的結(jié)果賦值在變量res上仿耽。

4. Response對象的常用屬性

1)打印變量res的數(shù)據(jù)類型

>>>import requests

>>>res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png')

>>>print(type(res))

#結(jié)果為res是一個對象合冀,屬于requests.models.Response類

2) Response對象常用的四個屬性:

3) Response.status_code 屬性

返回服務(wù)器是否同意請求或響應(yīng)的結(jié)果

>>>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)碼,以檢查請求是否成功

我們看到終端結(jié)果顯示了200项贺,這個數(shù)字代表服務(wù)器同意了請求君躺,并返回了數(shù)據(jù)給我們。

4)下面有一個表格开缎,供你參考不同的狀態(tài)碼代表什么:

5)response.content屬性

它能把Response對象的內(nèi)容以二進制數(shù)據(jù)的形式返回棕叫,適用于圖片、音頻奕删、視頻的下載俺泣。

>>>import requests

# 發(fā)出請求,并把返回的結(jié)果放在變量res中

>>>res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png')

# 把Reponse對象的內(nèi)容以二進制數(shù)據(jù)的形式返回

>>>pic = res.content

# 新建了一個文件ppt.jpg, 這里的文件沒加路徑完残,它會被保存在程序運行的當前目錄下伏钠。

# 圖片內(nèi)容需要以二進制wb讀寫, 你在學習open()函數(shù)時接觸過它。

>>>photo = open('ppt.jpg','wb')

# 獲取pic的二進制內(nèi)容

>>>photo.write(pic)

>>>photo.close() # 關(guān)閉文件

6) response.text屬性

它可以把Response對象的內(nèi)容以字符串的形式返回谨设,適用于文字熟掂、網(wǎng)頁源代碼的下載。

import requests #引用requests庫

res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md') #下載《三國演義》第一回扎拣,我們得到一個對象赴肚,它被命名為res

novel=res.text #把Response對象的內(nèi)容以字符串的形式返回

print(novel[:800]) #,只輸出800字

7)response.encoding屬性

它能幫我們定義Response對象的編碼鹏秋。

目標數(shù)據(jù)本身有它的編碼類型尊蚁,用requests.get()發(fā)送請求后亡笑,我們得到一個Response對象侣夷,其中requests模塊會對數(shù)據(jù)的編碼類型做出自己的判斷。

但是仑乌,如果加入了代碼 :

>>>res.encoding='gbk'

不管原來的判斷是什么百拓,直接定義了Response對象的編碼類型是'gbk'。

這樣一來晰甚,如果跟數(shù)據(jù)本身的編碼是'utf-8'衙传,就不一致了,打印出來就是一堆亂碼厕九。

遇上文本的亂碼問題蓖捶,就考慮用res.encoding。

三扁远、實例:在網(wǎng)上爬取一段文本并保存到本地電腦

# 引入requests庫

import requests

#下載《三國演義》第一回俊鱼,我們得到一個對象刻像,它被命名為res

res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md')

# 把Response對象的內(nèi)容以字符串的形式返回

novel = res.text

# 創(chuàng)建一個名為《三國演義》的txt文檔,指針放在文件末尾并闲,追加內(nèi)容

k = open('《三國演義》.txt','a+')

# 寫進文件中

k.write(novel)

# 關(guān)閉文檔

k.close()

四细睡、爬蟲倫理

1.? 有哪些反爬蟲策略呢??

網(wǎng)絡(luò)爬蟲在運行過程中也會遇到反爬蟲策略帝火,常見的有:

?訪問頻率限制

?Header頭部信息校驗

?采用動態(tài)頁面生成

?訪問地址限制

?登錄限制

?驗證碼限制

這些只是傳統(tǒng)的反爬蟲手段溜徙,隨著AI時代的到來,也會有更先進的手段的到來犀填。

2. Robots協(xié)議

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

如何查看網(wǎng)站的robots協(xié)議呢比庄,很簡單求妹,在網(wǎng)站的域名后加上/robots.txt就可以了。

所以佳窑,當你在百度搜索“淘寶網(wǎng)”時制恍,會看到下圖的這兩行小字。

五神凑、本節(jié)回顧

1)什么是網(wǎng)絡(luò)爬蟲净神?

2)網(wǎng)絡(luò)爬蟲的工作原理?

3)網(wǎng)絡(luò)爬蟲的四個步驟是什么溉委?

4)response對象的四個屬性分別有什么作用鹃唯?

5)從網(wǎng)上爬取一段文字(或圖片)的代碼?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瓣喊,一起剝皮案震驚了整個濱河市坡慌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌藻三,老刑警劉巖洪橘,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異棵帽,居然都是意外死亡熄求,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門逗概,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弟晚,“玉大人,你說我怎么就攤上這事∏涑牵” “怎么了淑履?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長藻雪。 經(jīng)常有香客問我秘噪,道長,這世上最難降的妖魔是什么勉耀? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任指煎,我火速辦了婚禮,結(jié)果婚禮上便斥,老公的妹妹穿的比我還像新娘至壤。我一直安慰自己,他們只是感情好枢纠,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布像街。 她就那樣靜靜地躺著,像睡著了一般晋渺。 火紅的嫁衣襯著肌膚如雪镰绎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天木西,我揣著相機與錄音畴栖,去河邊找鬼。 笑死八千,一個胖子當著我的面吹牛吗讶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播恋捆,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼照皆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了沸停?” 一聲冷哼從身側(cè)響起膜毁,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎星立,沒想到半個月后爽茴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體葬凳,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡绰垂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了火焰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劲装。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出占业,到底是詐尸還是另有隱情绒怨,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布谦疾,位于F島的核電站南蹂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏念恍。R本人自食惡果不足惜六剥,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望峰伙。 院中可真熱鬧疗疟,春花似錦、人聲如沸瞳氓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匣摘。三九已至店诗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間音榜,已是汗流浹背必搞。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留囊咏,地道東北人恕洲。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像梅割,于是被迫代替她去往敵國和親霜第。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容