饿了么爬虫(二)利用Fiddler进行抓包爬虫
之前我们通过保存网页HTML代码的方法对饿了么商品进行爬虫。但是这种方法比较复杂,需要保存非常多的html文件。具体文章可以参阅:http://smilecoc.vip/2020/09/26/%E9%A5%BF%E4%BA%86%E4%B9%88%E7%88%AC%E8%99%ABhtml%E6%96%B9%E6%B3%95/
这一次我们使用Fiddlerr进行抓包爬取商品数据。相关代码,文件请关注公众号:Romi的杂货铺回复饿了么Fiddler爬虫
获取
Fiddler简介
Fiddler是位于客户端和服务器端之间的代理,也是目前最常用的抓包工具之一 。它能够记录客户端和服务器之间的所有请求,可以针对特定的请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大
Fiddler的工作原理可以用下图来解释:
因此我们通过fiddler抓取服务器返回的数据并保存到本地即可
Fiddler抓包
在进行后续步骤前,请在电脑上安装Fiddler。
从我们之前的文章中可以确定饿了么的商品信息是通过json文件进行传输的,Json文件名都是?jsv开始。但是由于这些json文件是动态加载的同时request URL也是没有特定规范的,因此无法通过请求URL获取Json数据。
如果你想了解这些信息的具体确认步骤,请查看这篇文章:https://blog.csdn.net/qq_42692386/article/details/105825085
基于以上分析,我们使用Fiddler抓取Json文件并批量保存,这样就可以获取所有的Json数据并解析了。
具体步骤为:
1)首先查看商品信息对应的json文件找到具体的请求URL:
查看所有的Json文件可以发现所有的数据json文件请求 URL都包含/h5/mtop.venus.shopcategoryservice.getcategorydetail/1.1/?jsv=3.0.0
2)修改fiddler脚本并保存,使fiddler自动保存特定的数据。具体过程如下:
其中第三步需要修改的代码如下:
if (oSession.fullUrl.Contains("/h5/mtop.venus.shopcategoryservice.getcategorydetail/1.1/?jsv=3.0.0")) {oSession.utilDecodeResponse();//消除保存的请求可能存在乱码的情况var fso;var file;fso = new ActiveXObject("Scripting.FileSystemObject");//文件保存路径,可自定义file = fso.OpenTextFile("C:/Users/Smile/Downloads/elm_Response.txt",8 ,true, true);file.writeLine("Response code: " + oSession.responseCode);file.writeLine("Response body: " + oSession.GetResponseBodyAsString());file.writeLine("\n");file.close();}
3)之后重新刷新页面并下拉,点击所有的商品项目分类,确保加载所有的json文件并被filddler抓包。
4)之后就可以在我们之前fiddler脚本中设定的保存位置找到我们的所有数据信息了!
数据解析
这一步我们对上一步获取的json数据进行解析。
首先查看文件编码:
#查看文件编码
import chardet
path = r"C:\Users\Smile\Downloads\elm_Response.txt"
f = open(path,'rb')
data = f.read()
print(chardet.detect(data))
得到编码格式为UTF-16。之后通过python解析下载下来的文件。由于下载的文件格式中包含请求信息,所以需要在解析过程之中对文件进行清理。
具体代码为:
for jsondata in jsonlines:if jsondata not in ['\n','Response code: 200\n']:jsondata=jsondata.replace('Response body: ','')data = json.loads(jsondata)foods_list=data['data']['data'][0]['foods']for detail_info in foods_list:name=detail_info['name']currentprice=detail_info['currentPrice']saleunit=detail_info['defaultSaleUnit']org_price=detail_info['originalPrice']goods_name.append(name)goods_currentprice.append(currentprice)goods_orginalprice.append(org_price)goods_salesunit.append(saleunit)total={}
total['商品']=goods_name;total['现价']=goods_currentprice;total['原价']=goods_orginalprice;total['售卖单位']=goods_salesunit
data_final=pd.DataFrame(total)
print(data_final)
之后就可以看到我们所需要的信息了
商品 现价 原价 售卖单位
0 维尔美纤纯.黄系列纸面巾110抽*12包/提 39.8 份
1 洁云绒触感抽取式纸面巾8包/提 24.9 份
2 洁云绒触感抽取式纸面巾100抽*(10+2)包/提 39.9 份
3 维达超韧颐和园系列抽取式纸面巾100抽*10包/提 52.9 份
4 维达棉韧系列三层抽取式纸面巾100抽*18包/提 43.9 份
.. ... ... ... ...
135 阿奇侬铁观音茶味奶盖珍珠雪糕 360克/盒 23 46 份
136 阿奇侬珍珠奶茶味雪糕 340克(85克*4)/盒 23 46 份
137 迷你可爱多芒果酸奶混合口味冰淇淋200g10支装 15.9 份
138 哈根达斯草莓冰淇淋 81克/杯 28.8 34 份
139 哈根达斯香草冰淇淋 392克/杯 69 85.7
同理,如果你需要其他的商品信息,例如图片,编码等也可以通过解析Json文件得到。
相关代码,文件请关注公众号:Smilecoc的杂货铺 回复饿了么Fiddler爬虫
获取
饿了么爬虫(二)利用Fiddler进行抓包爬虫相关推荐
- python爬取饿了么奶茶店外卖数据_饿了么爬虫(二)利用Fiddler进行抓包爬虫
02 - Fiddler抓包 在进行后续步骤前,请在电脑上安装Fiddler. 从我们之前的文章中可以确定饿了么的商品信息是通过json文件进行传输的,Json文件名都是?jsv开始.但是由于这些js ...
- 利用Fiddler手机抓包对ONE·APP网页爬虫实现电影资讯微信Java开发
前言 好久没写博客了,打算把之前做的一个电影评分资讯推送的微信开发全程记录一下,适合对网络爬虫.微信开发感兴趣的童鞋.在教程开始之前,我想先引出两个问题(这次写博客假装很有条理的样子= =) 1. 为 ...
- 利用Fiddler手机抓包对ONE APP网页爬虫实现电影资讯微信Java开发
前言 好久没写博客了,打算把之前做的一个电影评分资讯推送的微信开发全程记录一下,适合对网络爬虫.微信开发感兴趣的童鞋.在教程开始之前,我想先引出两个问题(这次写博客假装很有条理的样子= =) 1. 为 ...
- Fiddler(二) - 使用Fiddler做抓包分析
文章目录 一.前言 二.抓包分析 三.指标分析 3.1 Statistic 3.2 Inspectors 3.3 AutoResponder 3.4 Composer 3.5 Filter 一.前言 ...
- fiddler手机抓包配置方法
一.下载工具包 百度搜索"fiddler 下载" ,安装最新版本 下载的软件安装包为"fiddler_4.6.20171.26113_setup.exe"格式, ...
- 【HTTP】Fiddler(二) - 使用Fiddler做抓包分析
上文( http://blog.csdn.net/ohmygirl/article/details/17846199 )中已经介绍了Fiddler的原理和软件界面.本文主要针对Fiddler的抓包处理 ...
- fiddler,他和其他抓包软件有什么区别,如何使用fiddler进行抓包
前言:本文章是搭配<批量获取微信公众号>一文,介于群里朋友很热情,我就趁着上班测完bug 来撰写该文章,那么读完本文,你会学习到什么呢? 什么是fiddler,他和其他抓包软件有什么区别, ...
- 使用Fiddler手机抓包https-----重要
Fiddler不仅可以对手机进行抓包,还可以抓取别的电脑的请求包,今天就想讲一讲使用Fiddler手机抓包! 使用Fiddler手机抓包有两个条件: 一:手机连的网络或WiFi必须和电脑(使用fidd ...
- 【转】用Fiddler做抓包分析详解
1.为什么是Fiddler? 抓包工具有很多,小到最常用的web调试工具firebug,达到通用的强大的抓包工具wireshark.为什么使用fiddler?原因如下: a.Firebug虽然可以抓包 ...
最新文章
- 使用kubernetes的deployment进行RollingUpdate
- java之图形化界面(GUI)
- idea(一)使用详解
- 漂亮的页面向导和Tab插件(Jquery)
- 为TFS配置跨平台的生成服务器Xplat (Ubuntu Linux)
- 每天五分钟,玩转Docker。-Day2
- Vim中根据正则对选中文本对齐(比如ini文件的=号对齐)
- 人工智能、机器学习、深度学习的关系,终于有人讲明白了
- 互联网欺诈,金钱利益下的汩汩恶意
- 【生信进阶练习1000days】day14-GenomicDataCommons(GDC)
- 总结——pandas/numpy处理数据中文手册速查
- 老婆怀孕记录以及如何照顾老婆总结
- 计算机怎么知道用户名和密码,电脑的用户名和密码怎么查看
- java svg png_java batik svg转png报错,球大神!!!在线等
- 在VSCode终端中安装Gulp包出现 * package is looking for funding run `npm fund..和无法加载文件,在此系统上禁止运行脚本的错误提示一步到位解决
- 毕设 JAVA.JSP网上学习答疑系统论文
- 基于STM32的智能车/平衡小车/蓝牙小车
- Java实现根据URL下载图片到本地
- 实现一个简单的语音聊天室(源码)
- 前端面试合集(更新中……)