Python分析了 7 万款 App,全是没想到

   日期:2024-12-25    作者:xnrg8 移动:http://ljhr2012.riyuangf.com/mobile/quote/19057.html

点击上方“简说Python”,选择“置顶/星标公众号”

福利干货,第一时间送达

本文转载自公众号 | 第2大脑

作者 | 苏克1900

本篇有点长,请耐心读完,周一愉快。

摘要:使用 Scrapy 爬取豌豆荚全网 70,000+ App,并进行探索性分析。

写在前面:若对数据抓取部分不感兴趣,可以直接下拉到数据分析部分。

之前我们使用了 Scrapy 爬取并分析了酷安网 6000+ App,为什么这篇文章又在讲抓 App 呢

因为我喜欢折腾 App,哈哈。当然,主要是因为下面这几点

第一、之前抓取的网页很简单

在抓取酷安网时,我们使用 for 循环,遍历了几百页就完成了所有内容的抓取,非常简单,但现实往往不会这么 easy,有时我们要抓的内容会比较庞大,比如抓取整个网站的数据,为了增强爬虫技能,所以本文选择了「豌豆荚」这个网站。

目标是爬取该网站所有分类下的 App 信息并下载 App 图标,数量在 70,000 左右,比酷安升了一个数量级。

第二、再次练习使用强大的 Scrapy 框架

之前只是初步地使用了 Scrapy 进行抓取,还没有充分领会到 Scrapy 有多么牛逼,所以本文尝试深入使用 Scrapy,增加随机 UserAgent、代理 IP 和图片下载等设置。

第三、对比一下酷安和豌豆荚两个网站

相信很多人都在使用豌豆荚下载 App,我则使用酷安较多,所以也想比较一下这两个网站有什么异同点。

话不多说,下面开始抓取流程。

▌分析目标

首先,我们来了解一下要抓取的目标网页是什么样的。

▌分析工具

▌网站分析

另外还需注意一点,该网站的 首页信息是静态加载的,从第 2 页开始是采用了 Ajax 动态加载,URL 不同,需要分别进行解析提取。

▌Scrapy抓取

我们要爬取两部分内容,一是 APP 的数据信息,包括前面所说的:名称、安装数量、体积、评论等,二是下载每款 App 的图标,分文件夹进行存放。

由于该网站有一定的反爬措施,所以我们需要添加随机 UA 和代理 IP,关于这两个知识点,我此前单独写了两篇文章进行铺垫,传送门

这里随机 UA 使用 scrapy-fake-useragent ,一行代码就能搞定,代理 IP 直接上阿布云付费代理,几块钱搞定简单省事。

下面,就直接上代码了。

items.py
middles.py

中间件主要用于设置代理 IP。

pipelines.py

该文件用于存储数据到 MongoDB 和下载图标到分类文件夹中。

存储到 MongoDB

按文件夹下载图标

settings.py
wandou.py

主程序这里列出关键的部分

这里,首先定义几个 URL,包括:分类页面、子分类首页、子分类 AJAX 页,也就是第 2 页开始的 URL,然后又定义了一个类 Get_category() 专门用于提取全部的子分类 URL,稍后我们将展开该类的代码。

程序从 start_requests 开始运行,解析首页获得响应,调用 get_category() 方法,然后使用 Get_category() 类中的 parse_category() 方法提取出所有 URL,具体代码如下

这里,除了分类名称 cate_name 可以很方便地直接提取出来,分类编码和子分类的子分类的名称和编码,我们使用了 get_category_code()  等三个方法进行提取。提取方法使用了 CSS 和正则表达式,比较简单。

最终提取的分类名称和编码结果如下,利用这些编码,我们就可以构造 URL 请求开始提取每个子分类下的 App 信息了。

接着前面的 get_category() 继续往下写,提取 App 的信息

这里,依次提取出全部的分类名称和编码,用于构造请求的 URL。

由于首页的 URL 和第 2 页开始的 URL 形式不同,所以使用了 if 语句分别进行构造。接下来,请求该 URL 然后调用 self.parse() 方法进行解析,这里使用了 meta 参数用于传递相关参数。

最后,parse() 方法用来解析提取最终我们需要的 App 名称、安装量等信息,解析完成一页后,page 进行递增,然后重复调用 parse() 方法循环解析,直到解析完全部分类的最后一页。

▌总体情况

看了上图,有两个「没想到

带着疑问和好奇,分别找到了「腾讯手机管家」和「微信」两款 App 的主页

腾讯管家 3 亿多的下载量等同于安装量,而微信 20 多亿的下载量,只有区区一千多万的安装量,两组数据对比,大致反映了两个问题

不管是哪个问题,都反映了一个问题该网站做得不够走心啊

为了证明这个观点,将前十名的安装量和下载量都作了对比,发现很多 App 的安装量和下载量是一样的,也就是说这些 App 的实际安装量并没有那么多,而如果这样的话,那么这份榜单就有很大水分了。

难道,辛辛苦苦爬了那么久,就得到这样的结果

「QQ 音乐」竟然是倒数第一,只有 3 次安装量

这和刚刚上市、市值千亿的 QQ 音乐是同一款产品?

这是已经不走心到什么程度了这个安装量,鹅厂还能「用心做好音乐」?

说实话,到这儿已经不想再往下分析下去了,担心爬扒出更多没想到的东西,不过辛苦爬了这么久,还是再往下看看吧。

如果这个网站的所有数据都是真的话,那么上面排名第一的手机管家,它一款就差不多抵得上这 6 万多款 App 的安装量!

对于多数 App 开发者,只能说现实很残酷,辛辛苦苦开发出来的 App,用户不超过 1万人的可能性高达近 95%

代码实现如下

▌分类情况

接下来,我们简单对比下豌豆荚和酷安两个网站的 App 情况。

▌对比酷安

二者最直观的一个区别是在 App 数量上,豌豆荚拥有绝对的优势,达到了酷安的十倍之多,那么我们自然感兴趣

豌豆荚是否包括了酷安上所有的 App ?

如果是,「你有的我都有,你没有的我也有」,那么酷安就没什么优势了。统计之后,发现豌豆荚 仅包括了 3,018 款,也就是一半左右,剩下的另一半则没有包括。

豌豆荚太牛逼了, App 数量是酷安的十倍,所以我选酷安。

|今日打卡主题

第n天打卡,你平时使用最多的软件是什么?选3个和我说说,我看看能不能爬一爬希望大家按要求走心打卡,让意见纠正传播

第一个坚持一个月的读者已经获得赠书一本,你呢?注意要按打卡要求来哈。

| 推荐阅读  

右下角点个「好看」就行啦,比心


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号