python爬取微信小程序(实战篇)
python爬取微信小程序(实战篇)
一、背景介绍
近期有需求需要抓取微信小程序中的数据分析,与一般的网页爬虫类似,主要目标是获取主要的URL地址进行数据爬取,而问题的关键在于如何获取移动端request请求后https加密的参数。本文从最初的抓包到获取URL、解析参数、数据分析及入库等,一步步进行微信小程序的数据爬取。
此次爬取的目标是微信小程序“财神股票”中的已受理科创版公司名单数据,如下:
注:抓包、分析、爬取等全过程几乎通用于微信小程序,可以类似的爬取其他小程序测试,原理大同小异。
二、环境配置
具体的环境配置参考:Python爬取微信小程序(Charles)
移动端:iPhone;
PC端:Windows 10;
软件:Charles
注:网络要求较高,请确保网络访问无限制。
三、Charles抓包
Charles相关的配置与说明在此前的一篇文章( Python爬取微信小程序(Charles))中有详细说明,此间不再赘述,强调一点就是移动端证书确保始终信任状态:
1. 设置移动端网络代理;
2. 打开Charles,关闭Windows proxy;
3. 打开微信小程序,Charles提示如下说明正常连接:
4. 点击微信小程序后,在Charles中显示如下:
5. 为了避免过度链接干扰,点击清除按键,清理后,点击“科创版专题”,Charles抓取链接如下:
6. 点击https://nujump.tigerobo.com,在右端contents中可以看到请求的详细内容(为什么是这个链接而不是别的?我也是一个个点开尝试的…)。
7. 在右侧的overview中,可以看到URL的value:https://nujump.tigerobo.com/HB_Jumper/ztjump.ashx?topic=8&aris_data=kcb_1_announced_corp&pageIndex=1&pageSize=5
看到这个链接有木有很熟悉的感觉呢?Method对应的值是GET,也就是说此链接是通过GET方法进行获取与展示数据,在主链接https://nujump.tigerobo.com/HB_Jumper/ztjump.ashx 后采用key与value拼接的方式发送请求,最后两个参数pageIndex=1与pageSize=5,对应第一个页面展示的5条数据,在Charles右侧的contents中,下方选择JSON Text,可以看到对应返回的response如下:
此处的 ”count”: 110 对应目前共有110条与科创版公司相关的数据。
8. 在拿到overview中的目标URL之后,直接修改pageSize的值为110,在浏览器中访问链接:https://nujump.tigerobo.com/HB_Jumper/ztjump.ashx?topic=8&aris_data=kcb_1_announced_corp&pageIndex=1&pageSize=110 后显示如下:
此数据即为小程序中展示的数据,也就是我们此次爬取的对象。
四、数据分析及入库
拿到目标URL后,可以采用python的requests库进行数据爬取:
详情代码此间不再赘述,完整代码参考GitHub:GitHub
注:
- 数据清洗的过程中,剔除了港股股票;
- 通过爬取东方财富网获取每家上市公司的股票代码,详情参考GitHub代码;
- 上市公司与科创版公司的对应关系为多对多的关系,即一家上市公司可能对应多家科创版公司,一家科创版公司可能对应多家上市公司;
- 由于科创版公司目前暂无股票代码等详细信息,故数据的存储方式采用上市公司对应科创板公司的方式存储,具有一定的冗余;
- 由于目前所有的数据均存在变化(如新加科创版公司、上市公司又与新的科创版公司相关联、科创版公司又与新的上市公司相关联等),所以最好每次都清空之前的数据,不要只在之前数据的基础上新增。
五、问题总结
1. 小程序内容加载缓慢或网络异常:
在测试时,发现Charles获取一些财经类小程序(新闻联播、财神行情等)均显示正常,抓包等也无问题,但是对于一些电商小程序(京东购物、当当等),移动端有时候可能会显示网页打不开或无法加载,经测试发现与网络关系较大,可能由于网络本身的原因、移动端代理设置等问题导致。
六、参考链接
python爬取微信小程序(实战篇)的更多相关文章
- Python爬取微信小程序(Charles)
Python爬取微信小程序(Charles) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90045204 一.前言 最近需要获取微信小 ...
- 【微信小程序】转载:微信小程序实战篇-下拉刷新与加载更多
下拉刷新 实现下拉刷新目前能想到的有两种方式 1. 调用系统的API,系统有提供下拉刷新的API接口 当然,你可以直接在全局变量app.json的window里面配置上面这个属性,这样整个项目都允许下 ...
- 微信小程序实战篇:商品属性联动选择(案例)
本期的微信小程序实战篇来做一个电商网站经常用到的-商品属性联动选择的效果,素材参考了一点点奶茶. 效果演示: 商品属性联动.gif 代码示例 1.commodity.xml <!-- < ...
- 前端微信小程序实战篇
电商底部导航栏的制作 我想大家对电商一定不陌生,一般电商的底部导航栏有以下几个首页.分类.购物车.个人中心. app.json是用来配置page路径以及导航栏属性的,那我们要做首页.分类.购物车.个人 ...
- 微信小程序实战篇:基于wxcharts.js绘制移动报表
前言 微信小程序图表插件(wx-charts)是基于canvas绘制,体积小巧,支持图表类型饼图.线图.柱状图 .区域图等图表图形绘制,目前wx-charts是微信小程序图表插件中比较强大好使的一个. ...
- 微信小程序实战篇-下拉刷新与加载更多
下拉刷新 实现下拉刷新目前能想到的有两种方式 1. 调用系统的API,系统有提供下拉刷新的API接口 2. 监听scroll-view,自定义下拉刷新,还记得scroll-view里面有一个binds ...
- 微信小程序实战篇-图片的预览、二维码的识别
开篇 今天,做的小程序项目要求,个人中心的客服图片在用户长按时可以识别其二维码,各种翻阅查找,采坑很多,浪费了很多时间,在这里记录下需要注意的点,以及对小程序官方提供的API做一个正确和清晰的认知,希 ...
- scrapy爬取微信小程序社区教程(crawlspider)
爬取的目标网站是: http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=1 目的是爬取每一个教程的标题,作者,时间和 ...
- 微信小程序实战篇-电商(一)
我想大家对电商一定不陌生,一般电商的底部导航栏有以下几个首页.分类.购物车.个人中心.所以我们按照这个来做吧. app.json是用来配置page路径以及导航栏属性的,那我们要做首页.分类.购物车.个 ...
随机推荐
- [BUAA2021软工助教]案例分析作业总结
目录 一.作业链接 二.优秀作业推荐 A+作业推荐 A作业推荐 三.总结 所有案例分析总结 特色与优点 问题与建议 不同类产品案例分析Bug汇总 CSDN问答社区.Stack Overflow.Seg ...
- CS与MSF之间的会话传递
0x01 MSF会话传递到CS 1. CS上的操作 点击Cobalt Strike然后选择监听器,创建一个HTTPS Beacon的监听器即可 创建成功后如下 2. MSF上的操作 前提是已经获取到了 ...
- SSDT表概念详解
SSDT 的全称是 System Services Descriptor Table,系统服务描述符表. 这个表就是一个把 Ring3 的 Win32 API 和 Ring0 的内核 API 联系起来 ...
- 从苏宁电器到卡巴斯基第24篇:难忘的三年硕士时光 II
没办法,还是先打好基础吧 其实在我知道自己面试失败后,第一个想法就是将面试官问我的问题都总结出来,然后通过查权威的资料,找出所有问题的答案,背下所有的答案,大概过一到两个月吧,再面试金山.当时我是这么 ...
- Google Hacking的用法
目录 Google Hacking 基本搜索 高级搜索 Index of inurl Google Hacking Google Hacking 是利用谷歌搜索的强大,来在浩瀚的互联网中搜索到我们需要 ...
- UVA10763交换学生
题意: 给你N组关系,每组关系是a,b,最后问你所有的a,b出现的次数和所有的b,a出现的此时是否全部都一样. 思路: 水题,直接开了个二维的map标记,map<int ...
- SpringBoot 项目 部署 war方式
SpringBoot部署 –war方式 步骤1部署方式 Springboot 和我们之前学习的web 应用程序不一样,其本质上是一个 Java 应用程序,那么又如何部署呢? 通常来说,Springbo ...
- CRM系统有哪几种常见类型?
随着市场的快速变化,客户开始变得越来越重要,因此CRM客户管理系统开始逐渐被企业所认可.从CRM系统进入中国市场到现在十余年的发展中,越来越多的CRM厂商开始出现.为了满足不同行业.不同类型的企业的需 ...
- 『动善时』JMeter基础 — 20、JMeter配置元件【HTTP Cookie管理器】详细介绍
目录 1.HTTP Cookie管理器介绍 2.HTTP Cookie管理器界面详解 3.JMeter中对Cookie的管理 (1)Cookie的存储 (2)Cookie的管理策略 4.补充:Cook ...
- Linux netperf网络性能测试
Linux netperf网络性能测试 (2013-10-14 16:07:48) 转载▼ 网络性能测量的五项指标 1. 可用性(availability) 测试网络性能的第一步是确定网络是否 ...