您的位置 首页 php

收藏,十分钟php进阶爬虫大师,1小时“偷”慕课网十万用户

点击关注,和我一起学习互联网吧。

前两天在网上看到一篇文章《我用爬虫一天时间“偷了”知乎一百万用户,只为证明PHP是世界上最好的语言 》,学习php也有一两年的时间了,都是使用python来写爬虫的,没想到php在语言处理跟dom节点操作这块居然也这么强大,果断来一句:“php果真是世界上最强大的语言”。当然,这是程序员的幽默,大家都懂的。本次十分钟进阶爬虫大师教程使用的是php的一个爬虫框架phpspider,使用这个框架基本不需要懂任何php语言,就可以写出一个高效稳定的爬虫。测试是使用 腾讯云 的免费服务器,配置特别低,内存为1G,CPU核数为1核,带宽为1M。首先来看下采集的界面如下所示:

采集界面

来看下采集的结果数据库:

采集数据

部分用户信息展示:

部分用户信息展示

总共采集了大约10万条 慕课网 用户信息,仅仅为了好玩采集了一些字段而已,学习+采集所花的时间1个小时不到。慕课网大约有上百万的用户,有时间可以放在服务器使用守护进程的方式运行程序把慕课网的所有用户信息采集下来(当然特别好奇慕课网居然没有限制ip访问的频率)。采集这些用户干嘛,当然现在就可以来玩别人口头中吹的很厉害的大数据了,比如性别分析,职业分析,因为取得了头像的url,甚至可以在网上找鉴黄程序来识别头像,还有粉丝数,关注数等,做关联分析,聚类等,可以采集更多的信息挖掘出用户对课程的喜爱程度,未来会出现哪些行业风口等,数据能够展示的信息是在是太多了,就看自己怎么挖掘了。

慕课网

工具:

  • phpspider框架

  • redis缓存、 mysql数据库

  • php5.x

  • 谷歌浏览器

教程:

本次使用的xpath,xpath在之前的文章中已经有发布了,不懂的童鞋可以点击关注按钮,查看历史文章,即可找到,当然本次不用我们自己来写Xpath,因为谷歌浏览器已经给我们了一个非常棒的工具,只要复制粘贴就可以写出漂亮的Xpath了。

1、页面分析

首先我们使用谷歌浏览器打开慕课网()如下所示:

慕课网首页

我们来分析慕课网有哪些页面,慕课网是一个在线教育的学习网站,网站的结构不会很复杂,我已经帮大家整理出来了,慕课网主要由以下几种类型页面:

  • 课程列表页

  • 课程页面

  • 对应课程的评论页面

  • 对应课程的问答页面

  • 对应课程的笔记页面

  • 猿问页面

  • 个人信息页面

其他的页面跟我们的采集信息无关,我们暂时不用看,我们着重来关注个人信息页面,可以看到个人信息页面的展示如下所示:

个人信息页面

我们要采集的信息集中在这一个页面,为了学习,我们简单的采集以下几个字段:用户头像、用户名称、用户性别、学习时长、积分、经验、关注数、粉丝数、用户的url页面。我们将数据存储在MySQL里面,首先我们要来设计一张数据表,本人使用的是phpmyadmin可以直接可视化创建数据表,现在我们将创建表的 sql语句 列出来,大家可以直接参照即可:

sql语句

各位学习的童鞋可以直接拷贝sql语句即可。接下来我们来分析上面字段的xpath,打开 谷歌 浏览器,打开任意用户的个人信息,然后打开谷歌的控制台(快捷键F12),如下所示:

谷歌xpath快捷使用教程

如上图所示给出了使用谷歌浏览器快捷写Xpath节点的教程。我们整理了所有的Xpath如下所示:

xpath

接下来就是重头戏了,我们来学习phpSpider这个爬虫框架,使用phpSpider不需要了解任何php知识,也不需要了解底层的php是怎么实现的,我们仅仅需要一个配置文件就可以完成整个爬虫流程。首先附上phpSpider的文档地址,中文传送门:。使用三步即可完成整个框架:

  • 配置$configs数组

  • 生成phpspider($configs)类

  • 执行start()函数

我们首先来看下官网给出的简单demo:

官网demo

可以看到name就是爬虫的名字,domains就是表示要采集的域名,scan_urls表示其实的url种子,content_url_regexes表示目标页面的url正则,list_url_regexes表示列表列的url(如果没有列表页则不用进行配置,配置该项目可以加快采集速度),export表示到处的格式,这里是到处到mysql数据库(支持直接到处csv,可以上官网查看),并且表名为imooc,fields表示要采集的字段,例如:

字段例子

name表示该字段存储在数据库的字段,selector表示该字段的Xpath(也可以是正则,可以上官网看文档),required表示该字段是必须的,不能为空,更多的字段可以上官网看文档,看到这里我们就可以来看是写我们的慕课爬虫了,已经整理好了,如下:

慕课爬虫

好了,到这里就差不多了,上面我们做了一个处理,重写了spider的on_extract_field函数,表示当我们的字段为url的时候,我们把它的值修改成页面的url,当然要记得要配置下数据库的链接地址,如果有 redis 也要顺便配置下,redis跟多任务可以大大加快采集速度,1M的网速,1核心Cpu,1G内存,1小时能采集10万条信息(php果然是最好的语言,呵呵)。配置数据库的文件为config/inc_config.php,打开即一目了然,如下所示:

数据库配置

好了,采集了10万条数据,差不多花了1个小时,有兴趣的童鞋可以自己试下使用php来“偷”慕课网的信息,感受一下世界上最好的语言(默默笑而不语),其实我对语言没有任何的偏见,世界上也没有最好的语言,只有最适合的语言,每一门语言都有它的优点,当然也有缺点。真正学好了一门语言,就如金庸小说里的,一草一叶都可以伤人。采集的教程就差不多到这里了,下次完善下这个爬虫,来挖掘出一些有用的东西,如文本分析,聚类分析,未来热门职业预测,不同城市IT的发展情况,想要学习的童鞋可以点击关注按钮,一起学习分享互联网中有趣的小技巧。

当然代码已经在github上开源了,有兴趣的童鞋可以送个star:

正处于新手期,随手点击关注,将会是更新更优质内容的动力。

文章来源:智云一二三科技

文章标题:收藏,十分钟php进阶爬虫大师,1小时“偷”慕课网十万用户

文章地址:https://www.zhihuclub.com/153589.shtml

关于作者: 智云科技

热门文章

网站地图