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