基礎(chǔ)篇-爬蟲基本原理

本文為自己動手崇决,豐衣足食陈莽!Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)案例的學(xué)習(xí)筆記,部分圖片來源于視頻截圖寿烟。

爬蟲:請求網(wǎng)站澈驼,并提取數(shù)據(jù)的自動化程序請求網(wǎng)站,并提取數(shù)據(jù)的自動化程序

爬蟲基本流程

在了解爬蟲的定義之后筛武,那么再來看看爬蟲是如何工作的吧缝其。
第一步:發(fā)起請求。一般是通過HTTP庫徘六,對目標站點進行請求内边。等同于自己打開瀏覽器,輸入網(wǎng)址待锈。
第二步: 獲取響應(yīng)內(nèi)容(response)漠其。如果請求的內(nèi)容存在于服務(wù)器上,那么服務(wù)器會返回請求的內(nèi)容竿音,一般為:HTML和屎,二進制文件(視頻,音頻)春瞬,文檔眶俩,Json字符串等。
第三步:解析內(nèi)容快鱼。對于用戶而言颠印,就是尋找自己需要的信息。對于Python爬蟲而言抹竹,就是利用正則表達式或者其他庫提取目標信息线罕。
第四步:保存數(shù)據(jù)。解析得到的數(shù)據(jù)可以多種形式窃判,如文本钞楼,音頻,視頻保存在本地袄琳。


爬蟲基本流程

請求與響應(yīng)

爬蟲最主要的任務(wù)就是發(fā)起請求(Request)询件,然后獲取服務(wù)器的響應(yīng)(Response)燃乍。


請求與響應(yīng)

Request所包含的信息
爬蟲的第一步就是發(fā)起請求,請求包括如下內(nèi)容:

  • 請求方式: 主要有GET,POST兩種類型宛琅,另外還有HEAD,PUT,DELETE,OPTIONS等刻蟹。
    GET特點:請求的參數(shù)全部包含在請求的網(wǎng)址內(nèi)。
    POST特點: 需要構(gòu)造Form Data才能發(fā)起請求
  • 請求URL:URL的全名是統(tǒng)一資源定位符嘿辟。網(wǎng)絡(luò)上的一切資源都是位于服務(wù)器的某一個位置舆瘪,而URL就是告知瀏覽器去哪里獲取這些資源。
  • 請求頭:請求頭(header)就是告訴服務(wù)器你是誰红伦,包括User-gaget,Host,Cookies等信息英古。添加請求頭信息,保證請求合法
  • 請求體:請求時包含的額外數(shù)據(jù)昙读,如POST請求需要輸入的表單數(shù)據(jù)召调,一般用于模擬登陸。


    什么是請求
console中的request

Response所包含的信息
向服務(wù)器發(fā)出請求后蛮浑,不出意外某残,服務(wù)器就會返回一個響應(yīng)(response)。包括如下內(nèi)容:

  • 響應(yīng)狀態(tài):用于表示請求的結(jié)果陵吸,如200代表成功,404找不到頁面介牙,502服務(wù)器錯誤等壮虫。
  • 響應(yīng)頭 :如內(nèi)容類型,內(nèi)容長度环础,服務(wù)器信息囚似,設(shè)置Cookie等等
  • 響應(yīng)體就是網(wǎng)頁源代碼,也就是用于解析數(shù)據(jù)的部分线得。
    訪問網(wǎng)頁遇到的第一個文件一般都是document形式饶唤,都是網(wǎng)頁源代碼。然后解析內(nèi)部的超鏈接贯钩,繼續(xù)發(fā)起請求募狂。
響應(yīng)內(nèi)容
console中的response

代碼部分:

# 導(dǎo)入請求庫
import requests
# 請求網(wǎng)頁
response = requests.get('http://www.baidu.com')
# 查看響應(yīng)體內(nèi)容
print(response.text)
print(response.content)
print(response.headers)
print(response.status_code)

能夠抓取的數(shù)據(jù):

只要是網(wǎng)頁上可以看到的內(nèi)容,不出意外都是可以抓取的角雷。但是能不能抓得到很大程度上取決于你的爬蟲水平祸穷。

  • 網(wǎng)頁文本: 如HTML文檔,Json格式文本等
  • 圖片: 獲取的都是二進制文件勺三,如果保存為圖片格式
  • 視頻: 也是也二進制文件雷滚,保存為視頻格式
  • 其他 : 只要你能請求到,就能獲取到
數(shù)據(jù)類型

如何解析網(wǎng)頁:

網(wǎng)頁解析的方法

解析網(wǎng)頁會遇到的問題

抓到的數(shù)據(jù)和瀏覽器看到的不一樣
element看到的網(wǎng)頁的源代碼已經(jīng)經(jīng)過修飾吗坚,數(shù)據(jù)來自后臺端口
瀏覽器運行JS祈远,后臺請求加載呆万,

如何解決JavaScript渲染問題

  • 分析Ajax請求
  • selenium/webdriver
  • Splash
  • PyV8、Ghost.py
數(shù)據(jù)保存方法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末车份,一起剝皮案震驚了整個濱河市谋减,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌躬充,老刑警劉巖逃顶,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異充甚,居然都是意外死亡以政,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門伴找,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盈蛮,“玉大人,你說我怎么就攤上這事技矮《队” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵衰倦,是天一觀的道長袒炉。 經(jīng)常有香客問我,道長樊零,這世上最難降的妖魔是什么我磁? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮驻襟,結(jié)果婚禮上夺艰,老公的妹妹穿的比我還像新娘。我一直安慰自己沉衣,他們只是感情好郁副,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著豌习,像睡著了一般存谎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肥隆,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天愕贡,我揣著相機與錄音,去河邊找鬼巷屿。 笑死固以,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播憨琳,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诫钓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了篙螟?” 一聲冷哼從身側(cè)響起菌湃,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遍略,沒想到半個月后惧所,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡绪杏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年下愈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕾久。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡势似,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出僧著,到底是詐尸還是另有隱情履因,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布盹愚,位于F島的核電站栅迄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏皆怕。R本人自食惡果不足惜毅舆,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望端逼。 院中可真熱鬧,春花似錦污淋、人聲如沸顶滩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽礁鲁。三九已至,卻和暖如春赁豆,著一層夾襖步出監(jiān)牢的瞬間仅醇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工魔种, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留析二,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像叶摄,于是被迫代替她去往敵國和親属韧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

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

  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,967評論 6 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理蛤吓,服務(wù)發(fā)現(xiàn)宵喂,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 前言:最近發(fā)現(xiàn)自己在網(wǎng)絡(luò)相關(guān)這一塊基礎(chǔ)很是欠缺会傲,所以準備花時間了解一下锅棕,本文主要是講http協(xié)議的一些基礎(chǔ),和一些...
    justCode_閱讀 2,094評論 0 23
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,112評論 25 707
  • 陪伴的周末淌山,我在書吧里裸燎,打開老師的視頻,開始學(xué)習(xí)艾岂。孩子湊過來顺少,“老師,我能畫嗎王浴?” 每人一張紙磚脆炎,...
    觀心客閱讀 543評論 2 0