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

注:

  1. 数据清洗的过程中,剔除了港股股票;
  2. 通过爬取东方财富网获取每家上市公司的股票代码,详情参考GitHub代码;
  3. 上市公司与科创版公司的对应关系为多对多的关系,即一家上市公司可能对应多家科创版公司,一家科创版公司可能对应多家上市公司;
  4. 由于科创版公司目前暂无股票代码等详细信息,故数据的存储方式采用上市公司对应科创板公司的方式存储,具有一定的冗余;
  5. 由于目前所有的数据均存在变化(如新加科创版公司、上市公司又与新的科创版公司相关联、科创版公司又与新的上市公司相关联等),所以最好每次都清空之前的数据,不要只在之前数据的基础上新增。

五、问题总结

1. 小程序内容加载缓慢或网络异常:

在测试时,发现Charles获取一些财经类小程序(新闻联播、财神行情等)均显示正常,抓包等也无问题,但是对于一些电商小程序(京东购物、当当等),移动端有时候可能会显示网页打不开或无法加载,经测试发现与网络关系较大,可能由于网络本身的原因、移动端代理设置等问题导致。

六、参考链接

https://blog.csdn.net/HeyShHeyou/article/details/90045204

python爬取微信小程序(实战篇)的更多相关文章

  1. Python爬取微信小程序(Charles)

    Python爬取微信小程序(Charles) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90045204 一.前言 最近需要获取微信小 ...

  2. 【微信小程序】转载:微信小程序实战篇-下拉刷新与加载更多

    下拉刷新 实现下拉刷新目前能想到的有两种方式 1. 调用系统的API,系统有提供下拉刷新的API接口 当然,你可以直接在全局变量app.json的window里面配置上面这个属性,这样整个项目都允许下 ...

  3. 微信小程序实战篇:商品属性联动选择(案例)

    本期的微信小程序实战篇来做一个电商网站经常用到的-商品属性联动选择的效果,素材参考了一点点奶茶. 效果演示:   商品属性联动.gif 代码示例 1.commodity.xml <!-- < ...

  4. 前端微信小程序实战篇

    电商底部导航栏的制作 我想大家对电商一定不陌生,一般电商的底部导航栏有以下几个首页.分类.购物车.个人中心. app.json是用来配置page路径以及导航栏属性的,那我们要做首页.分类.购物车.个人 ...

  5. 微信小程序实战篇:基于wxcharts.js绘制移动报表

    前言 微信小程序图表插件(wx-charts)是基于canvas绘制,体积小巧,支持图表类型饼图.线图.柱状图 .区域图等图表图形绘制,目前wx-charts是微信小程序图表插件中比较强大好使的一个. ...

  6. 微信小程序实战篇-下拉刷新与加载更多

    下拉刷新 实现下拉刷新目前能想到的有两种方式 1. 调用系统的API,系统有提供下拉刷新的API接口 2. 监听scroll-view,自定义下拉刷新,还记得scroll-view里面有一个binds ...

  7. 微信小程序实战篇-图片的预览、二维码的识别

    开篇 今天,做的小程序项目要求,个人中心的客服图片在用户长按时可以识别其二维码,各种翻阅查找,采坑很多,浪费了很多时间,在这里记录下需要注意的点,以及对小程序官方提供的API做一个正确和清晰的认知,希 ...

  8. scrapy爬取微信小程序社区教程(crawlspider)

    爬取的目标网站是: http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=1 目的是爬取每一个教程的标题,作者,时间和 ...

  9. 微信小程序实战篇-电商(一)

    我想大家对电商一定不陌生,一般电商的底部导航栏有以下几个首页.分类.购物车.个人中心.所以我们按照这个来做吧. app.json是用来配置page路径以及导航栏属性的,那我们要做首页.分类.购物车.个 ...

随机推荐

  1. CloudBase CMS + Next.js:轻松构建一个内容丰富的站点

    项目背景 试想一下,如果你现在要为你自己或者你所在的组织创建一个强内容的站点,同时要求好的 SEO(搜素引擎优化),比如博客,你会怎么做呢? 由 vite 或者 create-react-app 等脚 ...

  2. 群晖 创建nfs 共享文件夹 k8s 使用

    1) 打开控制面板 2) 打开共享文件夹 3) 新增共享文件夹 4) 基本信息配置 2) 3) 4) 5) 点完确定,应该会退出,继续选中刚才创建的,点编辑 2) 3) 5)返回主页面,点击file ...

  3. hdu4118

    题意:       给你一颗无向带权树,每个定点上有一个人,问所有定点都不在自己位置上的最长路径总和是多少..   思路:       其实很简单,贪心的想下,既然要求全局最大,那么对于每一条边用的次 ...

  4. LNMP环境搭建Wordpress博客

    目录 LNMP架构工作原理 yum源安装 网站源包安装 LNMP是Linux Nginx MySQL/MariaDB  Php/perl/python 的简称,是近些年才逐渐发展起来的构架,发展非常迅 ...

  5. android安全学习、工具库、框架

    在介绍android工具之前,先理清android中出现的文件格式: java:android源码 class:java编译后生成: dex: 由dx工具编译class而成,由dalvik执行: sm ...

  6. Pytorch_Part3_模型模块

    VisualPytorch beta发布了! 功能概述:通过可视化拖拽网络层方式搭建模型,可选择不同数据集.损失函数.优化器生成可运行pytorch代码 扩展功能:1. 模型搭建支持模块的嵌套:2. ...

  7. CRM系统实施的原则

    在我们使用CRM系统服务企业和客户之前,需要先系统的实施它.使用CRM系统却没有发挥它应有价值的案例很多,那么我们要怎样才能让CRM的作用发挥到最大,并确保它是成功的?那么今天小编跟您聊一聊,您的企业 ...

  8. mac 安装jmeter

    1.打开jemeter网址 http://jmeter.apache.org/download_jmeter.cgi 2.下载Binaries中的 apache-jmeter-5.0.tgz 3.解压 ...

  9. ES6学习-0 前言

    本菜鸟做了二十来年的程序开发了,前后台都写过,队伍也带过.大约是2000年左右,是用dephi 写后台CGI,所有的html,js,css基本都是混在CGI里输出到前台的,那时也没有明确的前后台的概念 ...

  10. [bug] @Test注解无法使用

    参考 https://blog.csdn.net/lixiangxiang666/article/details/83745901