用Python爬取WordPress官网所有插件

本文介绍了如何使用Python爬虫爬取WordPress官网的所有插件信息,包括插件列表、API接口的利用、Scrapy框架的使用以及数据存储和分析。通过爬虫获取的JSON数据,可以进行丰富的数据分析,例如作者、下载量和分类等。
摘要由CSDN通过智能技术生成

640?wx_fmt=jpeg

Illustrations by Wojtek Fus


丘壑,80后,现居上海,某互联网公司司职运维开发。兴趣广泛,对技术痴迷,喜欢钻研,对新技术都很感兴趣。

博客:bestscreenshot.com

本文作者已加入Python中文社区专栏作者计划

前言

只要是用WordPress的人或多或少都会装几个插件,可以用来丰富扩展WordPress的各种功能。围绕WordPress平台的插件和主题已经建立了一个独特的经济生态圈和开发者社区,养活了众多的WordPress相关的开发公司和开发者。各种强大的WordPress插件也层出不穷,有的甚至可以做出功能完善的网站,比如招聘网站、分类信息网站、电商网站、点评网站、培训网站等等,令我赞叹不已。

最近一直沉迷于研究 WordPress,仿佛事隔多年与初恋情人再续前缘一般陷入热恋。这几天突发奇想能不能把WordPress上这么多眼花缭乱的插件都爬下来,看看能不能分析出一点有意思的东西来。

总体思路

官网 https://wordpress.org/plugins/ 上列出了一共有 54,520 个插件。记得以前在官网上可以按各种分类浏览的,现在只有推荐的插件、收藏的插件、流行的插件几大类显示出来,其他的只能靠搜索了。

那么首先第一步我们要知道取哪里可以找到所有的WordPress插件列表,搜了一圈发现WordPress的svn上有这个完整的列表, http://plugins.svn.wordpress.org/ (这个网页比较大,5M多),比官网上的还要齐全,一共7万多个。有了完整列表就好办了。

接下来就是要获取的是插件的各种信息,比如作者、下载量、评分等等。这个可以去哪里获取呢?当然最傻的办法就是根据上面列表中的插件地址,把每个插件的网页down下来再提取,这也就是爬虫干的事。不过 WordPress.org 网站自身的 WordPress.org API 已经给开发者提供了非常方便强大的接口,可以获取到几乎所有 wordprss.org 上的主题、插件、新闻等相关的信息,也支持各种参数和查询。注意,这个和WordPress的REST API是两回事。基本上你可以理解成 Apple.com 的 API 和 iOS 的 API 之间的区别(虽然apple.com并没有什么API。。。)

比如本次需要插件的一些数据,那就可以使用关于插件描述的 API, https://api.wordpress.org/plugins/info/1.0/{slug}.json,slug也就是每个插件唯一的地址,这个在刚才svn上已经可以获取到了。用这个 API 可以返回关于插件的 json 格式的信息,很全面,如下:

640?wx_fmt=png

有了列表,有了返回格式,接下来就是要把这些信息给扒下来,其实就是重复遍历一遍就可以了,要么用著名 Python 的 Requests库 循环一圈,要么使用 Python 的爬虫框架 Scrapy, 都是可以的,本次决定使用 Scrapy。在存储爬取数据存储方面,本来打算是存入 mongodb 的,但是遇到的一个坑是API返回的json对象里version有的key是带小数点的,比如"0.1"这种是无法直接存入mongodb的,会报错说key不能包括., 所以这可以祭出另外一个厉害的python库 jsonline了, 它可以以jsonl文件的形式一行存储一条json,读写速度也很快。最后爬完所有数据的这个文件有341M之大。。。

最后,有了数据就可以做一些有意思的数据分析了,这一步主要会用到的就是一些常见的 Python 的数据分析工具和图表工具,pandas、numpy、seaborn等。根据上面的返回信息可以看出,能够分析的维度也是很多的,比如哪些作者开发的插件最多、哪些插件的下载量最多、哪些类别的插件最多、哪些国家的开发者最多、每年的插件增长量等等,甚至更进一步可以把所有插件的zip文件下载下来用AI做一些深入的代码分析等等,想想还是挺有意思的,本文的目标也就是提供一种思路和方法,希望能抛砖引玉。

下面进开始进入代码的世界吧

爬取数据

准备工作

要爬数据一般第一步是要确认爬虫的入口网页,也就是从哪里开始爬,沿着入口网页找到下一个URL,找-爬-找,不断循环重复直到结束。一般来说入口网页的分析都可以在scrapy内部进行处理,如果事先就已经可以明确知道所有要请求的网页地址,那么也可以直接把url列表扔进scrpay里,让它顺着列表一直爬爬爬就行了。

本次为了说的清晰一点,爬虫部分不用再次解释,所以分步进行,先把要爬的所有url准备好等下可以直接使用。之前说过了,WordPress所有的插件名称列表在这里可以找到 http://plugins.svn.wordpress.org/ ,这网页是一个非常简单的静态网页,就是一个巨大的ul列表,每一个li就是一个插件名字:

 <ul>
  <li><
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值