亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

網絡爬蟲的原理介紹

發布時間:2021-09-03 14:37:59 來源:億速云 閱讀:196 作者:chen 欄目:編程語言

這篇文章主要介紹“網絡爬蟲的原理介紹”,在日常操作中,相信很多人在網絡爬蟲的原理介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”網絡爬蟲的原理介紹”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

認識瀏覽器和服務器

大家對瀏覽器應該一點都不陌生,可以說,只要上過網的人都知道瀏覽器。可是,明白瀏覽器各種原理的人可不一定多。

作為要開發爬蟲的小伙伴,是一定一定要明白瀏覽器的工作原理的。這是你寫爬蟲的必備工具,別無他。

大家在面試的時候,有沒有遇到這么一個非常宏觀而又處處細節的解答題:

  • 請說說從你在瀏覽器地址欄輸入網站到你看到網頁中間都發生了什么?

這真是一個考驗知識面的題啊,經驗老道的老猿既可以滔滔不絕的講上三天三夜,也可以提煉出幾分鐘的精華講個大概。大家恐怕對整個過程就一知半解了。

巧的是,對這個問題理解的越透徹,越對寫爬蟲有幫助。換句話說,爬蟲是一個考驗綜合技能的領域。那么,大家準備好迎接這個綜合技能挑戰了嗎?

廢話不多說,我們就從解答這個題目開始,認識瀏覽器和服務器,看看這中間有哪些知識是爬蟲要用到的。

前面也說過,這個問題可以講上三天三夜,但我們沒那么多時間,其中一些細節就略過,把大致流程結合爬蟲講一講,分成三部分:

  1. 瀏覽器發出請求

  2. 服務器做出響應

  3. 瀏覽器接收響應

1. 瀏覽器發出請求

在瀏覽器地址欄輸入網址后回車,瀏覽器請服務器提出網頁請求,也就是告訴服務器,我要看你的某個網頁。
上面短短一句話,蘊藏了無數玄機啊,讓我不得不費點口舌一一道來。主要講述:

  • 網址是不是有效的?

  • 服務器在哪里?

  • 瀏覽器向服務器發送了些什么?

  • 服務器返回了些什么?

1) 網址是不是有效的?

首先,瀏覽器要判斷你輸入的網址(URL)是否合法有效。對應URL,小猿們并不陌生吧,以http(s)開頭的那一長串的字符,但是你知道它還可以以ftp, mailto, file, data, irc開頭嗎?下面是它最完整的語法格式:

URI = scheme:[//authority]path[?query][#fragment]
# 其中, authority 又是這樣的:
authority = [userinfo@]host[:port]
# userinfo可以同時包含user name和password,以:分割
userinfo = [user_name:password]

用圖更形象的表現處理就是這樣的:

網絡爬蟲的原理介紹

經驗之談:要判斷URL的合法性

Python里面可以用urllib.parse來進行URL的各種操作

In [1]: import urllib.parse 
In [2]: url = 'http://dachong:the_password@www.yuanrenxue.com/user/info?page=2'
In [3]: zz = urllib.parse.urlparse(url)
Out[4]: ParseResult(scheme='http', netloc='dachong:the_password@www.yuanrenxue.com', path='/user/info', params='', query='page=2', fragment='')

我們看到,urlparse函數把URL分析成了6部分:
scheme://netloc/path;params?query#fragment
需要主要的是 netloc 并不等同于 URL 語法定義中的host

2) 服務器在哪里?

上面URL定義中的host,就是互聯網上的一臺服務器,它可以是一個IP地址,但通常是我們所說的域名。域名通過DNS綁定到一個(或多個)IP地址上。瀏覽器要訪問某個域名的網站就要先通過DNS服務器解析域名,得到真實的IP地址。
這里的域名解析一般是由操作系統完成的,爬蟲不需要關心。然而,當你寫一個大型爬蟲,像Google、百度搜索引擎那樣的爬蟲的時候,效率變得很主要,爬蟲就要維護自己的DNS緩存。
老猿經驗:大型爬蟲要維護自己的DNS緩存

3) 瀏覽器向服務器發送些什么?

瀏覽器獲得了網站服務器的IP地址,就可以向服務器發送請求了。這個請求就是遵循http協議的。寫爬蟲需要關心的就是http協議的headers,下面是訪問  en.wikipedia.org/wiki/URL  時瀏覽器發送的請求 headers:

網絡爬蟲的原理介紹

可能已經從圖中看出來些端倪,發送的http請求頭是類似一個字典的結構:

  • authority: 就是訪問的目標機器;

  • method: http請求的方法有很多:

    • GET

    • HEAD

    • POST

    • PUT

    • DELETE

    • CONNECT

    • OPTIONS

    • TRACE

    • PATCH
      一般,爬蟲使用最多的是GET和POST

  • path: 訪問的網站的路徑

  • scheme: 請求的協議類型,這里是https

  • accept: 能夠接受的回應內容類型(Content-Types)

  • accept-encoding: 能夠接受的編碼方式列表

  • accept-language: 能夠接受的回應內容的自然語言列表

  • cache-control: 指定在這次的請求/響應鏈中的所有緩存機制 都必須 遵守的指令

  • cookie: 之前由服務器通過 Set- Cookie發送的一個 超文本傳輸協議Cookie
    這是爬蟲很關心的一個東東,登錄信息都在這里。

  • upgrade-insecuree-requests: 非標準請求字段,可忽略之。

  • user-agent: 瀏覽器身份標識

這也是爬蟲很關心的部分。比如,你需要得到手機版頁面,就要設置瀏覽器身份標識為手機瀏覽器的user-agent。

經驗之談: 通過設置headers跟服務器溝通

4) 服務器返回了些什么?

如果我們在瀏覽器地址欄輸入一個網頁網址(不是文件下載地址),回車后,很快就看到了一個網頁,里面包含排版文字、圖片、視頻等數據,是一個豐富內容格式的頁面。然而,我通過瀏覽器查看源代碼,看到的卻是一對文本格式的html代碼。

沒錯,就是一堆的代碼,卻讓瀏覽器給渲染成了漂亮的網頁。這對代碼里面有:

  • css: 瀏覽器根據它來排版,安排文字、圖片等的位置;

  • JavaScript: 瀏覽器運行它可以讓用戶和網頁交互;

  • 圖片等鏈接: 瀏覽器再去下載這些鏈接,最終渲染成網頁。

而我們想要爬取的信息就藏在html代碼中,我們可以通過解析方法提取其中我們想要的內容。如果html代碼里面沒有我們想要的數據,但是在網頁里面卻看到了,那就是瀏覽器通過ajax請求異步加載(偷偷下載)了那部分數據。

這個時候,我們就要通過觀察瀏覽器的加載過程來發現具體是哪個ajax請求加載了我們需要的數據。

到此,關于“網絡爬蟲的原理介紹”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

哈尔滨市| 开化县| 株洲市| 伊宁市| 乌什县| 绥芬河市| 营口市| 淳化县| 莲花县| 密云县| 汝南县| 深泽县| 扎兰屯市| 留坝县| 鹤壁市| 岳普湖县| 宁远县| 元朗区| 明光市| 谷城县| 遵义县| 易门县| 贵德县| 温泉县| 孟连| 平安县| 汉中市| 兴山县| 恩施市| 徐汇区| 威宁| 荆州市| 凉城县| 盐源县| 巢湖市| 台北市| 怀柔区| 衡南县| 阜新市| 青川县| 台南县|