以【某程旅行】为例,讲述小程序爬虫技术

简介: 使用Mitmproxy进行抓取数据包

大家好,我是辰哥~~~

前提:在学习本文采集小程序数据之前,相信大家都掌握了抓取数据包的技能,比如使用Mitmproxy进行抓取数据包。如果看到这里的你还没有掌握的话,可以参与辰哥之前的写的一篇关于mitmproxy使用的文章(实战|手把手教你如何使用抓包神器MitmProxy)。

本文目标:利用Mitmproxy抓取某程小程序景点数据,并实现翻页(下一页)循环爬取。

思路:

1、利用Mitmproxy抓取数据包,并进行分析

2、利用分析的结果,编写Python代码进行提取数据,并进行实现下一页采集

01、mitmproxy抓取数据包

1.启动mitmproxy

先配置好手机的代理IP和启动mitmproxy

在终端中启动mitmweb

mitmweb

在浏览器中查看数据包(输入mitmweb会自动在浏览器中打开网页,如果没有打开的则手动输入)

http://127.0.0.1:8081/#/flows

2.访问小程序

打开同程旅行小程序,点击全部景点

可以看到页面中出现了景点列表:

3.浏览器中查看数据包

上图中红框部分是景点列表的api接口,点击response查看返回的数据。

02、Python解析数据包

1.分析接口

经过分析,发现该接口是没有反爬(签名验证),因此通过这个接口可以直接爬取多页数据,比如修改接口链接中的参数

参数:

page页数

PageSize条数

CityId城市

keyword关键词

...

因此通过修改page就可以获取全部景点数据。

得知接口链接,在python中通过requests请求去获取数据,这种方式我们都会。

import requests
### 获取第1页~第10页数据
for p in range(1,11):
    # 页数
    url = "https://wx.17u.cn/scenery/json/scenerylist.html?PosCityId=78&CityId=53&page="+str(p)+"&sorttype=0&PageSize=20&IsSurrounding=1&isSmallPro=1&isTcSmallPro=1&isEncode=0&Lon=113.87234497070312&Lat=22.90543556213379&issearchbytimenow=0&IsNeedCount=1&keyword=&IsPoi=0&status=2&CityArea=5&Grades=&IsSearchKeyWordScenery=1"
    response = requests.get(url).json()
    print(response)

今天我们用另一种方式去获取数据,这种方式可以用于绕过接口签名验证的反爬,比如sign或者x-sign等签名加密参数。

2.直接解析数据包

相信看了辰哥的这篇文章(实战|手把手教你如何使用抓包神器MitmProxy)的读者都知道,mitmproxy抓取的数据包,除了在浏览器可以查看外,还可以编写的python代码一边抓取数据包,一边进行解析。

先看一下python可以获取数据包的那些数据(下图仅写成部分常用的)

在终端中调用上面的py代码,结果如下:

下面开始真正编写python代码,将景点数据直接保存在txt中。

在chenge.py文件中,修改response函数部分(如上图)

启动程序:

mitmdump.exe -s chenge.py

api接口返回的数据前面包含了:

"state":"100","error":"查询成功"

因此判断响应的数据中包含这个内容说明是含有景点列表的

景点列表数据在json数据的sceneryinfo字段中。我们将字段(name、address、grade)的内容取出来保存到txt文件中,并命名为景点.txt

在小程序中向下滑动,加载更多数据,同时mitmproxy继续抓包,对应的python程序将继续保存数据到txt中。

ps:这里仅讲述技术的使用,就没有去将数据完整爬取下来,并且为了演示数据可以保存,也暂时保存到txt,读者可以根据需要保存到数据库或者excel。

03、小结

本文目标:利用Mitmproxy抓取某程旅行小程序景点数据,并实现翻页(下一页)循环爬取。并且还讲述了如何通过mitmproxy绕过接口签名验证的反爬,比如sign或者x-sign等签名加密参数(虽然本文没有加密参数,但是技术大家可以先掌握,在遇到的时可以使用)

不会的小伙伴,感觉动手练习!!!!最后说一声:原创不易,求给个赞!

相关文章
|
10天前
|
数据采集 存储 Go
Golang爬虫代理接入的技术与实践
Golang爬虫代理接入的技术与实践
|
2月前
|
数据采集 JSON 数据可视化
利用R语言和curl库实现网页爬虫的技术要点解析
利用R语言和curl库实现网页爬虫的技术要点解析
|
4月前
|
数据采集 机器学习/深度学习 搜索推荐
探索数据之海——网络爬虫与数据抓取技术的应用与发展
在当今信息爆炸的时代,获取大量高质量的数据成为各行各业的迫切需求。网络爬虫和数据抓取技术作为一种有效的手段,正在被广泛应用于各个领域。本文将深入探讨网络爬虫的原理、应用场景以及未来的发展趋势,为读者带来关于数据抓取技术的全面了解。
308 5
|
4月前
|
数据采集 搜索推荐 数据处理
探索数据的无尽可能性:网络爬虫与数据抓取技术
本文将深入探讨网络爬虫与数据抓取技术的重要性和应用,介绍其在信息收集、市场分析、学术研究等领域的广泛应用。我们将探索这一技术的原理、挑战和发展前景,并展望未来数据抓取技术的潜力。
63 0
|
3月前
|
数据采集 数据处理 开发者
Python爬虫技术在数据收集与分析中的应用
随着互联网信息的爆炸式增长,数据收集与分析变得愈发重要。本文将介绍Python爬虫技术在实际项目中的应用,探讨其在数据收集、清洗和分析过程中的作用,以及如何利用Python相关库提高爬虫效率。
|
24天前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中PWA技术的应用,PWA结合Web的开放性和原生应用的性能,提供离线访问、后台运行、桌面图标和原生体验。开发者可利用Service Worker实现离线访问,Worker处理后台运行,Web App Manifest添加桌面图标,CSS和JavaScript提升原生体验。实践中需注意兼容性、性能优化和用户体验。PWA技术能提升小程序的性能和用户体验,助力开发者打造优质小程序。
|
9天前
|
数据采集 存储 JSON
【专栏】解密网络爬虫与数据抓取技术的奇妙世界
【4月更文挑战第27天】本文介绍了网络爬虫与数据抓取的基础知识,包括爬虫的工作原理、关键技术和不同类型。通过实例展示了如何构建简单爬虫,强调实战中的环境搭建、目标分析及异常处理。同时,文章探讨了法律、伦理考量,如尊重版权、隐私保护和合法用途,并分享了应对反爬策略。最后,倡导遵守数据抓取道德规范,以负责任的态度使用这项技术,促进数据科学的健康发展。
|
7天前
|
数据采集 Web App开发 数据可视化
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
|
17天前
|
数据采集 Web App开发 开发者
探秘Python爬虫技术:王者荣耀英雄图片爬取
探秘Python爬虫技术:王者荣耀英雄图片爬取
|
25天前
|
数据采集 C# 数据安全/隐私保护
掌握 C# 爬虫技术:使用 HttpClient 获取今日头条内容
本文介绍了如何使用C#的HttpClient与爬虫代理IP技术抓取今日头条内容,以实现高效的数据采集。通过结合亿牛云爬虫代理,可以绕过IP限制,增强匿名性。文中提供了一个代码示例,展示如何设置代理服务器信息、请求头,并用正则表达式提取热点新闻标题。利用多线程技术,能提升爬虫采集效率,为市场分析等应用提供支持。
掌握 C# 爬虫技术:使用 HttpClient 获取今日头条内容