网络爬虫系列(一):chrom抓包分析

  • 1、测试环境
  • 2、网页分析
    • (1) 网页源代码分析
    • (2) 网络抓包分析

1、测试环境

浏览器:chrome浏览器
网页分析工具 :开发者工具

2、网页分析

(1) 网页源代码分析

我们知道,网页有静态网页和动态网页之分,很多人会误认为静态网页就是没有动态效果的网页,其实这种说法是不对的。

  • 静态网页是指没有后台数据库的不可交互网页 ,常以 .htmhtml.xml为后缀。
  • 动态网页 是指能与后台数据库进行数据传递的可交互网页,常以.aspx.asp.jsp.php 为后缀。

另外,目前很多动态网站都采取了 异步加载技术 (Ajax),这就是很多时候抓取到的源代码和网站显示的源代码不一致的原因。
至于如何爬取动态网页,这里提供两种方法:

  • 一是下面即将讲到的通过抓包分析 Ajax 请求

  • 二是利用 Selenium 等工具进行动态渲染

下面我们以京东商品为例,分析如何通过 Chrome 进行抓包,我们首先打开某个商品的首页
https://item.jd.com/100003688077.html

来到网页空白处单击鼠标右键,选择查看网络源代码或者使用快捷键 Ctrl+U直接打开)

请注意,查看网页源代码 得到的是网站最原始的源代码,也就是通常我们抓取到的源代码

再次来到网页空白处单击鼠标右键,选择 检查(或者使用快捷键 Ctrl+Shift+I/ F12直接打开)

请注意,检查 得到的是是经过 Ajax 加载和 JavaScript 渲染的源代码,也就是当前网站显示内容的源代码

经过对比之后,我们可以发现两者的内容是不一样的,这就是 异步加载技术 (Ajax) 的典型例子

就目前来说至少京东商品的价格是通过异步加载生成的,这里提供三种方法判断网页中某个内容是否为动态生成:

  • 一是分析查看网页源代码 生成的源代码,可以在其中寻找动态请求的典型语句,也可以将其与 检查 生成的源代码进行比较

  • 二是通过以下将要讲解的网页抓包分析来判断,这种方法最为常用,应当好好掌握

  • 三是一种取巧的方法,就是禁用 Chrome 浏览器的 JavaScript 加载。
    具体可以在 Chrome 的地址栏中输入 chrome://settings/content/javascript 来到 JavaScript 的设置页面

    然后将 JavaScript 的选项关闭,这时候重新刷新网页,就会看到原来显示价格的地方出现了空白。这就表明原来的价格是通过 JavaScript 动态生成的

(2) 网络抓包分析

我们还是以京东商品为例进行讲解,打开某个商品的首页,尝试抓取动态加载的商品价格数据
https://item.jd.com/100003688077.html

使用快捷键 Ctrl+Shift+I 或 F12打开开发者工具,然后选择 Network 选项卡 进行抓包分析

此时按下快捷键 F5刷新页面,可以看到开发者工具中出现了各种各样的包,我们使用 Filter 对包进行过滤

首先,我们选中 Doc,可以看到列表中只出现了一个包

一般来说,这个就是浏览器接收到的第一个包,用于获取请求网站的原始源代码
点击 Header 可以看到它的头部参数设置

点击Response 可以看到返回的源代码,容易发现,它其实和 查看网页源代码 返回的信息是一致的

下面让我们重新回到正题,对于动态加载的抓包分析,主要看XHR 和 JS 选项卡即可

选中 JS 进行过滤,发现列表中出现了好多包,经过分析,我们筛选出下图中加标记的包

这个包返回的是关于价格的信息,可是经过仔细分析发现,这些价格并不是属于当前商品的,而是属于人气配件的

这个包是和价格相关的,我们先看看这个包的请求 URL 吧

https://p.3.cn/prices/mgets?callback=jQuery9945544&type=1&area=27_2376_2381_0&pdtk=&pduid=15809723846531442021077&pdpin=&pin=null&pdbp=0&skuIds=J_100003688077%2CJ_8141909%2CJ_5028795%2CJ_152026%2CJ_61192828749%2CJ_100005600572%2CJ_2533882%2CJ_854803%2CJ_3693877%2CJ_100005483954%2CJ_136360&ext=11100000&source=item-pc

直接用浏览器打开该 URL,可以看到返回的的确是包含价格信息的 JSON 数据

分析该 URL 的参数,可以推测 skuId 应该就是每一个商品独一无二的标志了,那么我们所需要的商品的 skuId 究竟可以在哪里找到呢?

事实上,SKU 是一个在物流、运输等产业中常用的缩写,其全称是 Stock Keeping Unit(库存量单位)即库存进出计量的基本单元,现在已经被引申为产品统一编号的简称,每种产品均对应有唯一的 SKU

回顾我们刚开始进入的商品首页,
https://item.jd.com/100003688077.html
这其中不是就隐藏着当前商品的唯一号码标识(100003688077)了吗?不妨一试!

果然,访问商品价格的完整 URL 我们就可以得到了,即https://p.3.cn/prices/mgets?skuIds=100003688077

通过直接访问该网址我们就可以得到当前商品的价格信息

事实上,我们还可以对该 URL 进行适当的泛化以适应京东所有商品的价格爬取

很简单,只需要将 skuIds 作为参数独立分离出来即可,https://p.3.cn/prices/mgets?skuIds={ID}

通过泛化后的 URL ,理论上只要能得到商品的 skuId,我们就可以访问对应商品的价格

网络爬虫系列(一):chrome抓包分析相关推荐

  1. python 爬虫 包_python爬虫学习之路-抓包分析

    利用浏览器抓包,是爬虫中的很实用的技能.在爬虫编程之前,我们要对抓取的目标页面有所了解,比如浏览器的这个请求这个页面中间都经历了什么,数据是怎么发送和返回的. 抓包的作用 我把抓包分析的作用简单列一下 ...

  2. Python3网络爬虫开发实战,抓包工具 Charles 的使用

    11.1 Charles 的使用 Charles 是一个网络抓包工具,我们可以用它来做 App 的抓包分析,得到 App 运行过程中发生的所有网络请求和响应内容,这就和 Web 端浏览器的开发者工具 ...

  3. Python网络爬虫实战之Fiddler抓包今日头条app!附代码

    一.Fiddler介绍 1.Fiddler简介 Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的"进出"F ...

  4. 网络中路由器问题和抓包分析均衡负载实验

    路由器 一. 路由协议 常见路由协议有:RIPv2,direct,static,OSPFv2,IS-IS,EIFGRP (Ciso私有)和EGP:外部路由协议.IGP:内部路由协议 二. 路由选谁问题 ...

  5. 网络爬虫系列之网页抓取

    ​ (你的世界是个什么样的世界?你说,我们倾听!) ----------------- 网页抓取 我们在抓取网页时需要安装requests包,具体安装过程如下: pip install request ...

  6. 网络爬虫---抓包分析,用抓包分析爬取腾讯视频某视频所有评论(Fiddler工具包的分享)

    抓包分析,用抓包分析爬取腾讯视频某视频所有评论(Fiddler工具包的分享) 文章目录 抓包分析,用抓包分析爬取腾讯视频某视频所有评论(Fiddler工具包的分享) 一.抓包分析 1.下载工具并安装 ...

  7. 数据分析与爬虫实战视频——学习笔记(二)(千图网图片爬虫、fiddler抓包分析、腾讯视频评论爬虫、多线程爬虫(糗百))

    网址:[数据挖掘]2019年最新python3 数据分析与数据爬虫实战 https://www.bilibili.com/video/av22571713/?p=26 第三周第二节课 1抓包分析实战 ...

  8. Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark

    Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark Wireshark(前称Ethereal)是一个网络包分析工具.该工具主要是用来捕获网络包,并显示包的详细情况.本节将分别介绍 ...

  9. Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述

    Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...

最新文章

  1. i++ 和++i的区别
  2. input添加float样式后位置偏移的解决
  3. js中继承的几种用法总结(apply,call,prototype)
  4. 【简讯】微软拟发布开源VB6
  5. android自定义控件是一个 内部类 如何在xml中引用,android 自定义view属性
  6. python (六)函数
  7. Struts2中jsp前台传值到action后台的三种方式以及valueStack的使用
  8. python面试题之如何解决验证码的问题,用什么模块,听过哪些人工打码平台?
  9. SVN环境搭建详解(来源网络)
  10. 最常见到的runtime exception 异常
  11. 2091操作系统引论
  12. 哥,我跟你讲,我想创业
  13. 数值线性代数徐树方pdf_MIT线性代数4-8:矩阵分解,向量空间,列空间和零空间,线性方程组求解...
  14. 【Vue实战】汽车品牌列表表格实现(添加、删除功能)
  15. 深度linux升级,测试从Deepin Linux 15升级到Deepin Linux v20
  16. 《老路用得上的商学课》21-25学习笔记
  17. 第三章:x264视频制作meGUI工具使用
  18. BOF算法 基于SIFT+KMeans
  19. java百元买百兔 穷举法_JAVA--算法与数据结构- 逢7过百钱白鸡不死神兔【1/100】...
  20. 测试REST Web服务

热门文章

  1. 敏捷开发进度管理之燃尽图
  2. 局域网限制网速软件_为什么员工反感局域网管理软件
  3. APB总线总结和VIP使用
  4. Dell E5400 Windows 2003 安装注意事项
  5. 软件工程要学计算机网络吗,计算机网络与软件工程专业学习心得.docx
  6. 【微信机器人】可做自动回复,自动接收转账,群聊机器人。
  7. 华为2018实习生机试题目
  8. AT2341 Increasing Numbers
  9. 暗淡的太阳,Sun公司兴衰史
  10. 3D Human Body Reconstruction from a Single Image via Volumetric Regression笔记