全棧 7 爬蟲 Http請求和Chrome

2021-09-11 09:32:22 字數 2023 閱讀 2998

這是全棧資料工程師養成攻略系列教程的第七期:7 爬蟲 http請求和chrome。

我們在瀏覽網頁時,網頁上顯示的文字和等資料從何而來?為了弄清這一點,需要首先了解下什麼是http請求。

每個網頁鏈結,或者稱作url,通常包含以下幾個部分,協議://網域名稱:埠/路由?引數

可以在終端或cmd中使用ping訪問某乙個url,測試是否能正常連線,並且檢視網域名稱所對應的ip。

ping kaoshi.edu.sina.com.cn複製**
在瀏覽器中訪問乙個url,我們就能看到對應網頁上的文字和等內容,這一過程主要包括以下幾個步驟,其中的資料傳輸大多是基於http請求實現的。

瀏覽器向所訪問的伺服器請求指定的url;

伺服器根據url返回相應的資料;

瀏覽器載入所返回的資料,經渲染後以網頁的形式呈現給使用者。

在正式開始介紹http請求之前,我們來了解一下chrome瀏覽器,以熟悉一些必須的背景知識。

chrome是一款優秀的瀏覽器,渲染效果和除錯功能都非常強大。在chrome瀏覽器中訪問網頁後,在頁面上右擊滑鼠,可以找到「顯示網頁源**(view source)」和「檢查(inspect)」兩項功能。前者可以檢視網頁的靜態源**,而後者提供了相當強大的除錯功能。

開發者工具

開發者工具包括elementsconsolesourcesnetwork等多個標籤頁,分別提供了以下功能:

network標籤頁會記錄網頁在渲染過程中所請求的各類資源檔案及其對應的請求時間。大多數網頁只在一開始載入的時候請求各類資源檔案,載入完畢後不再請求;也有一些網頁在載入完畢後仍定時請求一些資源,用於動態更新頁面上的內容。所訪問的網頁使用了哪些資源?使用者瀏覽的過程中網頁做了哪些事情?這些都可以在network標籤頁中找到答案。

network標籤頁中的資源檔案主要分為以下幾大類:

所以在寫爬蟲的時候,我們需要對目標網頁進行分析。一方面是直接把目標頁面請求下來,經過解析後獲取需要的字段;另一方面是請求網頁所使用到的一些資源,或許能夠更方便地拿到豐富的格式化資料。

掌握了和chrome瀏覽器相關的內容,我們再來介紹下http請求,因為以上所請求的大多數資源都是基於http協議獲取的。

http是目前最通用的web傳輸協議。無論是用電腦看**,還是用手機玩遊戲,客戶端和服務端之間的資料傳輸大多都是基於http協議。http請求中最常見的兩類分別是getpost

get請求,顧名思義,是去拿資料。在get請求中,可以包含或不包含引數。如果包含引數的話,引數直接寫在url中,因此是顯式可見的,即所訪問的服務+引數。例如之前提到的 kaoshi.edu.sina.com.cn/?p=college&… 就是乙個get請求,引數指明了我們需要進行的操作是獲取全部大學的資訊資料。

post請求一般包含引數,向伺服器提交url和引數,然後獲取相應的資料。在post請求中,引數並不是直接寫在url中,而是在資料報內部提供,所以不是顯示可見的,相對get請求而言更加安全。

post請求

如果我們直接在瀏覽器中訪問 shuju.wdzj.com/plat-info-t…,即將post請求組裝成乙個get請求,把引數直接寫在url裡面訪問,伺服器將報錯,無法獲得正確的資料,從這個例子可以看出post請求和get請求的不同。

回過頭來總結下之前訪問過的url。同樣是在瀏覽器中訪問,有的url返回的是經過渲染後的複雜頁面,有的url僅返回json文字資料。因此,可以將url分為以下兩大類:

對於以上兩大類url,在寫爬蟲時我們會採取不同的處理方法。能找到所需的api最好,因為格式化資料更便於處理。如果只有html,就需要對渲染後的頁面進行分析,通過一些解析工具提取出想要的字段。

如果覺得文章不錯,不妨點一下左下方的喜歡~

修改爬蟲的HTTP請求

如果遇到會對請求頭進行審查的 他的status code會為非200,這時候想要正常爬取,需要新建鍵值對kv 並在requests.get 裡面加上headers kv 下面是實際 import requests url kv try r requests.get url,headers kv r....

爬蟲學習 http請求詳解

上篇部落格裡面寫了,爬蟲就是發http請求 瀏覽器裡面開啟傳送的都是http請求 然後獲取到response,咱們再從response裡面找到想要的資料,儲存到本地。咱們本章就來說一下什麼是http請求,它裡面都有哪些東西,我們在寫爬蟲的時候,怎麼http請求裡面哪些對我們的爬蟲有影響。咱們開啟乙個...

GoLang 爬蟲 模擬傳送HTTP請求

golang的標準庫net http可以實現client和server的功能開發。簡單來說,client就是我們向伺服器傳送http請求,常用於訪問api介面獲取相應資料 開發網路爬蟲等功能 server是開發伺服器web應用,也就說我們常說的 開發。本博文講述如何使用golang的標準庫net h...