Network 工具的使用


Network 能記錄瀏覽器的所有請求。

一、快捷鍵(F12)打開Network。

 

 第0行:紅色的 按鈕是啟動Network 監控,默認高亮是打開,灰色圓圈是清空面板上的信息。右側勾選框Preserve log ,也是第4的位置,作用是‘保留請求日志’。如果不惦記這個,當頁面發生跳轉時,記錄會被清空。所以需要爬取跳轉界面時,需要點亮它。

第1行:是對請求進行分類查看。

常用的分類:

  • ALL(查看全部)
  • XHR(僅查看XHR)
  • Doc(Document ,第0個請求一般在這里)
  • Img(僅查看圖片)
  • Media(僅查看媒體文件)
  • Other(其他)
  • JS和CSS 是前端代碼,負責發起請求和頁面實現
  • Font 是文字的字體。

也可以直接參考下表:

 其中非常重要的一個請求是XHR,XHR的功能是傳輸數據,其中最重要的一種數據是用json 格式寫的,和html 一樣,這種數據能夠有組織地存儲大量內容。json 的數據類型是‘文本’,在Python 語言中,把它稱為字符串;對於json 格式的數據,可以輕松轉化為字典/列表,也能將列表/字典 轉化為json 格式的數據。

 

  • 1.是一個時間軸,記錄什么時間,有什么請求。
  • 2.name: 請求的名字
  • 3.Status: 請求的狀態,1xx/2xx/3xx/4xx
  • 4. type : 請求的類型
  • 6.Size :數據的大小
  • 7.time:請求的耗時
  • 8.waterfall :瀑布流,用於描述每個請求的起止時間

二、json 文件查找(前提是確定數據沒有存儲在html 里)

  • 第一種的話是根據文件大小(Size)尋找,你想要爬取的文件數據存儲量肯定是特別大的,那它相比其他的文件內存,所占用的內存肯定是最大的,所以可以嘗試直接尋找文件Size 值最大的文件查看,點擊Preview,查看最小級里是否有需要的數據。
  • 第二種就是先把Network 面板清空,上下滑動界面,看有沒有新多出來的XHR,多出來的那個肯定就是你要的數據了。

三、json 文件模塊介紹

  • Headers :標頭(請求信息)
  • Preview:預覽
  • Response:響應
  • Cookies: cookies
  • Timing :時間

四、Preview 功能描述

 點擊Preview ,可以看到,Preview 下存儲的都是一層一層字典格式的數據,要取數據的話,就要一層一層取key,從而拿到value 值。

五、Headers 功能描述

 點擊headers,可以看到有4個模塊

5.1 General  模塊介紹

 

  •  Request URL :請求的url 地址,在瀏覽器中打開這個鏈接,看到的 是一層又一層字典和列表。
  • Request Method :請求用到的方法 GET/POST
  • Remote Address: 服務器的ip地址 和端口
  • Referrer Policy: 用於記錄請求來源信息

5.2 Query String Parameters 

  中文翻譯的話就是查詢字符串參數,所以常用來存儲需要傳遞得到參數。

  由兩部分組成的,‘https://www.douban.com/search’+‘q=%E6%B5%B7%E8’

  中間用?進行分割,前半部分是我們所請求的地址。后半部分就是請求所帶的參數,它會告訴服務器,我們需要什么樣的參數,這部分用‘utf-8’進行編碼了。

  在這個鏈接里,是用# 進行分隔的。#和?功能是一樣的,作用都是分隔,把#替換成?,訪問效果是一樣的。(注意:用?分隔的url 不一定能用#代替)

  在requests 模塊里,requests.get() 提供了一個參數params,可以用字典的形式,把參數傳遞進去。詳情的話可以參考一下官方文檔:

 

   需要注意的點吶,就是Query String Parameters里面的內容,復制拿到之后,需要封裝為一個字典,傳遞給params。特別是,要給他們打引號,讓他們變成字符串。

params = {
    'g_tk':'5381',
    'loginUin':'0', 
    'hostUin':'0',
    'format':'json',
    'inCharset':'utf8',
    'outCharset':'GB2312',
    'notice':'0',
    'platform':'yqq.json',
    'needNewCode':'0',
    'cid':'205360772',
    'reqtype':'2',
    'biztype':'1',
    'topid':'102065756',
    'cmd':'6',
    'needmusiccrit':'0',
    'pagenum':str(i),
    'pagesize':'15',
    'lasthotcommentid':'song_102065756_3202544866_44059185',
    'domain':'qq.com',
    'ct':'24',
    'cv':'10101010'   
    } #將參數封裝為字典
res_comments = requests.get(url,params=params)

5.3 Request Headers

 每一個請求,都會有一個Request Heaers ,也就是請求頭。它里面會有關於該請求的基本信息。

  • user-agent : 中文翻譯的話就是用戶代理,可以記錄電腦的信息和瀏覽器的版本,這里我用的是Chrome
  • origin :中文源頭     referer: 引用來源    兩個都記錄了請求的最初起源是來自哪個網頁,區別是referer 比origin 攜帶的信息更多。

5.3.1 如何添加request headers 

首先看一下user-agent 的官方文檔

 

 和params 很像,就是封裝成字典就可以了。

import requests
url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
headers = {
    'origin':'https://y.qq.com',
    'referer':'https://y.qq.com/n/yqq/song/004Z8Ihr0JIu5s.html',
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
    # 標記了請求從什么設備,什么瀏覽器上發出
    }
# 偽裝請求頭
params = {
'ct':'24',
'loginUin':'0'
}
# 將參數封裝為字典
res_music = requests.get(url,headers=headers,params=params)
# 發起請求,填入請求頭和參數

加請求頭的目的就是把自己的爬蟲偽裝成真實的瀏覽器,因為在某些情況下,服務器很可能會拒絕爬蟲的訪問,甚至說有些網頁都禁止爬蟲訪問。所以加了請求頭可以幫助我們應對反爬蟲技術,把python 爬蟲偽裝成真正的瀏覽器,不讓服務器辨識。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM