【爬蟲開發(fā)】爬蟲開發(fā)從0到1全知識教程第1篇:爬蟲課程概要,爬蟲概述【附代碼文檔】

本教程的知識點為:爬蟲課程概要 爬蟲基礎 爬蟲概述 知識點: 1. 爬蟲的概念 requests模塊 requests模塊 知識點: 1. requests模塊介紹 1.1 requests模塊的作用: 數據提取概要 數據提取概述 知識點 1. 響應內容的分類 知識點:了解 響應內容的分類 Selenium課程概要 selenium的介紹 知識點: 1. selenium運行效果展示 1.1 chrome瀏覽器的運行效果 Selenium課程概要 selenium的其它使用方法 知識點: 1. selenium標簽頁的切換 知識點:掌握 selenium控制標簽頁的切換 反爬與反反爬 常見的反爬手段和解決思路 學習目標 1 服務器反爬的原因 2 服務器常反什么樣的爬蟲 反爬與反反爬 驗證碼處理 學習目標 1.圖片驗證碼 2.圖片識別引擎 反爬與反反爬 JS的解析 學習目標: 1 確定js的位置 1.1 觀察按鈕的綁定js事件 Mongodb數據庫 介紹 內容 mongodb文檔 mongodb的簡單使用 Mongodb數據庫 介紹 內容 mongodb文檔 mongodb的聚合操作 Mongodb數據庫 介紹 內容 mongodb文檔 mongodb和python交互 scrapy爬蟲框架 介紹 內容 scrapy官方文檔 scrapy的入門使用 scrapy爬蟲框架 介紹 內容 scrapy官方文檔 scrapy管道的使用 scrapy爬蟲框架 介紹 內容 scrapy官方文檔 scrapy中間件的使用 scrapy爬蟲框架 介紹 內容 scrapy官方文檔 scrapy_redis原理分析并實現斷點續(xù)爬以及分布式爬蟲 scrapy爬蟲框架 介紹 內容 scrapy官方文檔 scrapy的日志信息與配置 利用appium抓取app中的信息 介紹 內容 appium環(huán)境安裝 學習目標

全套筆記資料代碼移步: 前往gitee倉庫查看

感興趣的小伙伴可以自取哦,歡迎大家點贊轉發(fā)~


全套教程部分目錄:


部分文件圖片:

爬蟲課程概要

爬蟲特點概要:

1.知識點碎片化

爬蟲方向的知識點都是十分碎片化的统刮,因為我們在寫爬蟲的時候會面對各種各樣的網站尿庐,每個網站實現的技術都有相似漆撞,但是大多數時候還是有區(qū)別的岖赋,這也就要求我們根據不同的網站使用不通的應對手段映挂,爬蟲并不向我們在學習web階段的時候要實現某一功能只需要按照套路就能夠做出來,本階段課程主要就是交給大家常用的一些網站爬取技術普气。

2.學習難度

爬蟲的入門相對而言還是要比web簡單谜疤,但是在后期,爬蟲的難度要比web難现诀,難在哪呢夷磕?在于爬蟲工程師與網站的開發(fā)與運維人員的對抗,可能你寫了一個網站的爬蟲仔沿,結果該網站的運維人員發(fā)現之后添加了反爬措施坐桩,那么作為爬蟲工程師就需要解決這個反爬。

3.學習特點

本階段的課程并不像web階段有一個完整的web項目進行學習于未,因為爬蟲的特點撕攒,也就導致了我們的爬蟲階段課程是以某網站爬蟲為講解對象的,也就是一個技術點一個案例烘浦。

4.后續(xù)發(fā)展

相對于web主要掌握框架的使用抖坪,然后就是熟悉業(yè)務的單一方向,爬蟲需要學生掌握的東西要更多闷叉,同學們在工作過程中可能根據工作需要涉及到更多從沒有接觸過的知識擦俐。

5.法律層面

目前而言,爬蟲相關工作屬于灰色地帶握侧,主要是目前國內現行法律對于爬蟲的相關評判還沒有一個明確的制度蚯瞧。

6.課件

課件可能存在bug,可能會定期更新品擎,課件中的案例可能因為網站更新或者某些網絡原因失效埋合,那么同學們在做練習或者學習的時候可以自己找一些網站進行練習。

7.建議

好記性不如爛筆頭萄传,建議大家多找一些網站進行爬取練習甚颂。

爬蟲基礎

本階段課程主要學習一下關于爬蟲的相關前置知識和一些理論性的知識,通過本階段的課程我們能夠知道什么是爬蟲秀菱,都有那些分類振诬,爬蟲能干什么等,同時還會站在爬蟲的角度復習一下http協議衍菱。

爬蟲概述

知識點:
  • 了解 爬蟲的概念

  • 了解 爬蟲的作用

  • 了解 爬蟲的分類

  • 掌握 爬蟲的流程


1. 爬蟲的概念

模擬瀏覽器赶么,發(fā)送請求,獲取響應

網絡爬蟲(又被稱為網頁蜘蛛脊串,網絡機器人)就是模擬客戶端(主要指瀏覽器)發(fā)送網絡請求辫呻,接收請求響應清钥,一種按照一定的規(guī)則,自動地抓取互聯網信息的程序放闺。

  • 原則上,只要是客戶端(瀏覽器)能做的事情循捺,爬蟲都能夠做
  • 爬蟲也只能獲取客戶端(瀏覽器)所展示出來的數據

知識點:了解 爬蟲的概念

2. 爬蟲的作用

爬蟲在互聯網世界中有很多的作用,比如:

  1. [數據采集](

    1. [抓取微博評論](
    2. [抓取招聘網站的招聘信息](
    3. [新浪滾動新聞](
    4. [百度新聞網站](
  2. [軟件測試](

    1. [爬蟲之自動化測試](
    2. [蟲師](
  3. [12306搶票](

  4. 網站上的投票

    1. [投票網](
  5. 網絡安全

    1. [短信轟炸](

      1. [注冊頁面1](
      2. [注冊頁面2](
      3. [注冊頁面3](
    2. [web漏洞掃描](


知識點:了解 爬蟲的作用

3. 爬蟲的分類

3.1 根據被爬取網站的數量不同雄人,可以分為:

  • 通用爬蟲,如 搜索引擎
  • 聚焦爬蟲念赶,如12306搶票础钠,或專門抓取某一個(某一類)網站數據

3.2 根據是否以獲取數據為目的,可以分為:

  • 功能性爬蟲叉谜,給你喜歡的明星投票旗吁、點贊
  • 數據增量爬蟲,比如招聘信息

3.3 根據url地址和對應的頁面內容是否改變停局,數據增量爬蟲可以分為:

  • 基于url地址變化很钓、內容也隨之變化的數據增量爬蟲

  • url地址不變、內容變化的數據增量爬蟲

爬蟲的分類

知識點:了解 爬蟲的分類

4. 爬蟲的流程

爬蟲的基本流程如圖所示

爬蟲的工作流程
  1. 獲取一個url
  2. 向url發(fā)送請求董栽,并獲取響應(需要http協議)
  3. 如果從響應中提取url码倦,則繼續(xù)發(fā)送請求獲取響應
  4. 如果從響應中提取數據,則將數據進行保存

知識點:掌握 爬蟲的流程

爬蟲基礎

本階段課程主要學習一下關于爬蟲的相關前置知識和一些理論性的知識锭碳,通過本階段的課程我們能夠知道什么是爬蟲袁稽,都有那些分類,爬蟲能干什么等擒抛,同時還會站在爬蟲的角度復習一下http協議推汽。

http協議復習

知識點
  • 掌握 http以及https的概念和默認端口

  • 掌握 爬蟲關注的請求頭和響應頭

  • 了解 常見的響應狀態(tài)碼

  • 理解 瀏覽器和爬蟲爬取的區(qū)別


一提起http協議,大家都會想起它是一個應用層協議歧沪,那么http協議跟爬蟲有什么關系呢歹撒?請看下圖:

http作用

1. http以及https的概念和區(qū)別

HTTPS比HTTP更安全,但是性能更低

  • HTTP:超文本傳輸協議诊胞,默認端口號是80

    • 超文本:是指超過文本暖夭,不僅限于文本;還包括圖片厢钧、音頻鳞尔、視頻等文件
    • 傳輸協議:是指使用共用約定的固定格式來傳遞轉換成字符串的超文本內容
  • HTTPS:HTTP + SSL(安全套接字層),即帶有安全套接字層的超本文傳輸協早直,默認端口號:443

    • SSL對傳輸的內容(超文本寥假,也就是請求體或響應體)進行加密
  • 可以打開瀏覽器訪問一個url,右鍵檢查霞扬,點擊net work糕韧,點選一個url枫振,查看http協議的形式


知識點:掌握 http以及https的概念和默認端口


2. 爬蟲特別關注的請求頭和響應頭

2.1 特別關注的請求頭字段

http的請求形式

http請求的形式如上圖所示,爬蟲特別關注以下幾個請求頭字段

  • Content-Type
  • Host (主機和端口號)
  • Connection (鏈接類型)
  • Upgrade-Insecure-Requests (升級為HTTPS請求)
  • User-Agent (瀏覽器名稱)
  • Referer (頁面跳轉處)
  • Cookie (Cookie)
  • Authorization(用于表示HTTP協議中需要認證資源的認證信息萤彩,如前邊web課程中用于jwt認證)

加粗的請求頭為常用請求頭粪滤,在服務器被用來進行爬蟲識別的頻率最高,相較于其余的請求頭更為重要雀扶,但是這里需要注意的是并不意味這其余的不重要杖小,因為有的網站的運維或者開發(fā)人員可能劍走偏鋒,會使用一些比較不常見的請求頭來進行爬蟲的甄別

2.2 特別關注的響應頭字段

http的響應形式

http響應的形式如上圖所示愚墓,爬蟲只關注一個響應頭字段

  • Set-Cookie (對方服務器設置cookie到用戶瀏覽器的緩存)

知識點:掌握 爬蟲關注的請求頭和響應頭

3. 常見的響應狀態(tài)碼

  • 200:成功
  • 302:跳轉予权,新的url在響應的Location頭中給出
  • 303:瀏覽器對于POST的響應進行重定向至新的url
  • 307:瀏覽器對于GET的響應重定向至新的url
  • 403:資源不可用;服務器理解客戶的請求浪册,但拒絕處理它(沒有權限)
  • 404:找不到該頁面
  • 500:服務器內部錯誤
  • 503:服務器由于維護或者負載過重未能應答扫腺,在響應中可能可能會攜帶Retry-After響應頭;有可能是因為爬蟲頻繁訪問url村象,使服務器忽視爬蟲的請求笆环,最終返回503響應狀態(tài)碼

我們在學習web知識的時候就已經學過了狀態(tài)碼的相關知識,我們知道這是服務器給我的相關反饋厚者,我們在學習的時候就被教育說應該將真實情況反饋給客戶端躁劣,但是在爬蟲中,可能該站點的開發(fā)人員或者運維人員為了阻止數據被爬蟲輕易獲取籍救,可能在狀態(tài)碼上做手腳习绢,也就是說返回的狀態(tài)碼并不一定就是真實情況,比如:服務器已經識別出你是爬蟲蝙昙,但是為了讓你疏忽大意闪萄,所以照樣返回狀態(tài)碼200,但是響應體重并沒有數據奇颠。

所有的狀態(tài)碼都不可信败去,一切以是否從抓包得到的響應中獲取到數據為準


知識點:了解 常見的響應狀態(tài)碼


4. 瀏覽器的運行過程

在回顧完http協議后,我們來了解以下瀏覽器發(fā)送http請求的過程

http發(fā)送的過程

4.1 http請求的過程

  1. 瀏覽器在拿到域名對應的ip后烈拒,先向地址欄中的url發(fā)起請求圆裕,并獲取響應
  2. 在返回的響應內容(html)中,會帶有css荆几、js吓妆、圖片等url地址,以及ajax代碼吨铸,瀏覽器按照響應內容中的順序依次發(fā)送其他的請求行拢,并獲取相應的響應
  3. 瀏覽器每獲取一個響應就對展示出的結果進行添加(加載),js诞吱,css等內容會修改頁面的內容舟奠,js也可以重新發(fā)送請求竭缝,獲取響應
  4. 從獲取第一個響應并在瀏覽器中展示,直到最終獲取全部響應沼瘫,并在展示的結果中添加內容或修改————這個過程叫做瀏覽器的渲染

4.2 注意:

但是在爬蟲中抬纸,爬蟲只會請求url地址,對應的拿到url地址對應的響應(該響應的內容可以是html耿戚,css湿故,js,圖片等)

瀏覽器渲染出來的頁面和爬蟲請求的頁面很多時候并不一樣膜蛔,是因為爬蟲不具備渲染的能力(當然后續(xù)課程中我們會借助其它工具或包來幫助爬蟲對響應內容進行渲染)

  • 瀏覽器最終展示的結果是由多個url地址分別發(fā)送的多次請求對應的多次響應共同渲染的結果
  • 所以在爬蟲中晓锻,需要以發(fā)送請求的一個url地址對應的響應為準來進行數據的提取

知識點:理解 瀏覽器展示的結果可以由多次請求對應的多次響應共同渲染出來,而爬蟲是一次請求對應一個響應

5. 關于http協議的其它參考閱讀

  • [
  • [
  • [
  • [
  • [
  • [

requests模塊

本階段課程主要學習requests這個http模塊飞几,該模塊主要用于發(fā)送請求獲取響應,該模塊有很多的替代模塊独撇,比如說urllib模塊屑墨,但是在工作中用的最多的還是requests模塊,requests的代碼簡潔易懂纷铣,相對于臃腫的urllib模塊卵史,使用requests編寫的爬蟲代碼將會更少,而且實現某一功能將會簡單搜立。因此建議大家掌握該模塊的使用

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末以躯,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子啄踊,更是在濱河造成了極大的恐慌忧设,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,294評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颠通,死亡現場離奇詭異址晕,居然都是意外死亡,警方通過查閱死者的電腦和手機顿锰,發(fā)現死者居然都...
    沈念sama閱讀 90,493評論 3 385
  • 文/潘曉璐 我一進店門谨垃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人硼控,你說我怎么就攤上這事刘陶。” “怎么了牢撼?”我有些...
    開封第一講書人閱讀 157,790評論 0 348
  • 文/不壞的土叔 我叫張陵匙隔,是天一觀的道長。 經常有香客問我浪默,道長牡直,這世上最難降的妖魔是什么缀匕? 我笑而不...
    開封第一講書人閱讀 56,595評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮碰逸,結果婚禮上乡小,老公的妹妹穿的比我還像新娘。我一直安慰自己饵史,他們只是感情好满钟,可當我...
    茶點故事閱讀 65,718評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胳喷,像睡著了一般湃番。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吭露,一...
    開封第一講書人閱讀 49,906評論 1 290
  • 那天吠撮,我揣著相機與錄音,去河邊找鬼讲竿。 笑死泥兰,一個胖子當著我的面吹牛,可吹牛的內容都是我干的题禀。 我是一名探鬼主播鞋诗,決...
    沈念sama閱讀 39,053評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼迈嘹!你這毒婦竟也來了削彬?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,797評論 0 268
  • 序言:老撾萬榮一對情侶失蹤秀仲,失蹤者是張志新(化名)和其女友劉穎融痛,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體神僵,經...
    沈念sama閱讀 44,250評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡酌心,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,570評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了挑豌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片安券。...
    茶點故事閱讀 38,711評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖氓英,靈堂內的尸體忽然破棺而出侯勉,到底是詐尸還是另有隱情,我是刑警寧澤铝阐,帶...
    沈念sama閱讀 34,388評論 4 332
  • 正文 年R本政府宣布址貌,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏练对。R本人自食惡果不足惜遍蟋,卻給世界環(huán)境...
    茶點故事閱讀 40,018評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望螟凭。 院中可真熱鬧虚青,春花似錦、人聲如沸螺男。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽下隧。三九已至奢人,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淆院,已是汗流浹背何乎。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留土辩,地道東北人宪赶。 一個月前我還...
    沈念sama閱讀 46,461評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像脯燃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蒙保,可洞房花燭夜當晚...
    茶點故事閱讀 43,595評論 2 350

推薦閱讀更多精彩內容