其实 web scraper 说到底就是那点儿东西,所有的网站都是大同小异,但是都还不同。这也是好多同学总是遇到问题的原因。因为没有统一的模板可用,需要理解了 web scraper 的原理并且对目标网站加以分析才可以。
今天再介绍一篇关于 web scraper 抓取数据的文章,除了 web scraper 的使用方式外,还包括一些简单的数据处理和分析。都是基础的不能再基础了。
选择这个网站一来是因为作为一个开发者在上面买了不少课,还有个原因就是它的专栏也比较有特点,需要先滚动加载,然后再点击按钮加载。

开始正式的数据抓取工作之前,先来看一下我的成果,我把抓取到的90多个专栏的订阅数和销售总价做了一个排序,然后把 TOP 10 拿出来做了一个柱状图出来。

抓取数据

今天要抓的这个网站是一个 IT 知识付费社区,极客时间,应该互联网圈的大多数同学都听说过,我还在上面买了 9 门课,虽然没怎么看过。

极客时间的首页会列出所有网课,和简书首页的加载方式一样,都是先滚动下拉加载,之后变为点击加载更多按钮加载更多。这是一种典型网站加载方式,有好多的网站都是两种方式结合的。这就给我们用 web scraper 抓数据制造了一定的麻烦,不过也很好解决。

1、创建 sitemap,设置 start url 为 https://time.geekbang.org/

2、创建滚动加载的 Selector,这只是个辅助,帮助我们把页面加载到出现点击加载更多按钮出现,设置如下,注意类型选择 Element scroll down,选择整个课程列表区域作为 Element。

3、创建点击加载更多按钮的 Selector,这个才是真正要抓取内容的 Selector。之后会在它下面创建子选择器。创建之前,需要下拉记载页面,直到出现加载更多按钮。

首先选择元素类型为 Element click 。

Selector 选择整个课程列表,并设置为 Multiple。

Click 选择加载更多按钮,这里需要注意一点,之前的文章里也提到过,这个按钮没办法直接点击选中,因为点击后会触发页面加载动作,所以要勾选 Enable key events,然后按 S 键,来选中这个按钮。

Click type 设置为 Click more 类型。

Click element uniqueness 设置 unique CSS Selector。

4、进入上一步创建的 Selector ,创建子选择器,用来抓取最终需要的内容。

5、最后运行抓取就可以啦。

数据清洗

这里只是很简单的演示,真正的大数据量的数据清洗工作要费力耗时的多。而且也远不止一个 Excel 能完成的,还需要程序代码的配合,大多数时候还会用到数据库,当然对于比较简单的数据或者没有开发经验的同学来说,用 Excel 也就是最简单省事的选择了。

打开 csv 文件后,第一列信息是 web scraper 自动生成的,直接删掉即可。不知道什么原因,有几条重复数据,第一步,先把重复项去掉,进入 Excel 「数据」选项卡,点击删除重复项即可。

第二步,由于抓下来的课时和报名人数在同一个元素下,没办法在 web scraper 直接放到两个列,所以只能到 Excel 中处理。我的操作思路是这样的,先复制一列出来,然后利用内容替换的方式,将其中一列的报名人数替换成空字符,替换的表达式为 讲 | *人已学习,这样此列就变成了课时列。将另外一列的课时替换为空字符串,先替换 x讲,替换内容为*讲 |,然后再替换人已学习, 那么这列就变成了报名人数列。价格就只保留当前价格,删掉无用列,并且处理掉限时、拼团、¥这些无用字符。

数据分析

因为这里抓取的数据比较简单,也没指望能分析出什么结果。 一共90几门课,也就是分析分析哪门课最受欢迎、价格最高。直接在 Excel 里排个序就好了。然后计算一下几门课程的总价格。

当然真正的商业数据分析不仅仅是一个 Excel 画个图就搞定的事儿。也不是弄两个柱状图就可以的了,一般都需要多个维度、数据关联分析、深度挖掘等。

在 Excel 中做了两个柱状图,分别统计订阅人数前十名和总销售金额的前十名。下面是最后的呈现效果。

如果不想用 Excel, 有一些在线的图表制作网站也可以将 Excel 上传做一些基本的图表,但是灵活性稍微差一点。我用了「图表秀(https://www.tubiaoxiu.com/)」,可以将 Excel 上传,而且还能对 Excel 进行编辑,可以删除列、删除行等操作,这也是相对其他在线图表平台的优势,比如百度的「图说」。下面是我做的一个简单的柱状图,除了柱状图外还支持好多种图表。

以上仅仅是一个业余选手做数据抓取和分析的过程,请酌情参考。

扫描下方二维码,关注公众号:
回复「Excel」获取本例中的 Excel 数据文件。

回复「jike」获取本例中的 sitemap。

不要吝惜你的「推荐」呦

欢迎关注,不定期更新本系列和其他文章
公众号:古时的风筝

相关阅读:

最简单的数据抓取教程,人人都用得上

web scraper 进阶教程,人人都用得上

web scraper 常见的几个小问题

web scraper 抓取数据并做简单数据分析的更多相关文章

  1. web scraper 抓取网页数据的几个常见问题

    如果你想抓取数据,又懒得写代码了,可以试试 web scraper 抓取数据. 相关文章: 最简单的数据抓取教程,人人都用得上 web scraper 进阶教程,人人都用得上 如果你在使用 web s ...

  2. 简易数据分析 11 | Web Scraper 抓取表格数据

    这是简易数据分析系列的第 11 篇文章. 今天我们讲讲如何抓取网页表格里的数据.首先我们分析一下,网页里的经典表格是怎么构成的. First Name 所在的行比较特殊,是一个表格的表头,表示信息分类 ...

  3. 简易数据分析 13 | Web Scraper 抓取二级页面

    这是简易数据分析系列的第 13 篇文章. 不知不觉,web scraper 系列教程我已经写了 10 篇了,这 10 篇内容,基本上覆盖了 Web Scraper 大部分功能.今天的内容算这个系列的最 ...

  4. 简易数据分析 07 | Web Scraper 抓取多条内容

    这是简易数据分析系列的第 7 篇文章. 在第 4 篇文章里,我讲解了如何抓取单个网页里的单类信息: 在第 5 篇文章里,我讲解了如何抓取多个网页里的单类信息: 今天我们要讲的是,如何抓取多个网页里的多 ...

  5. web scraper 抓取分页数据和二级页面内容

    如果是刚接触 web scraper 的,可以看第一篇文章. web scraper 是一款免费的,适用于普通用户(不需要专业 IT 技术的)的爬虫工具,可以方便的通过鼠标和简单配置获取你所想要数据. ...

  6. python 抓取数据,pandas进行数据分析并可视化展示

    感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为半桶子水的水平,一直在想写什么,为什么写,怎么写. 直到现在找到了一种好的办法: 1.写什么 自己手上掌握的,工 ...

  7. Web Scraper——轻量数据爬取利器

    日常学习工作中,我们多多少少都会遇到一些数据爬取的需求,比如说写论文时要收集相关课题下的论文列表,运营活动时收集用户评价,竞品分析时收集友商数据. 当我们着手准备收集数据时,面对低效的复制黏贴工作,一 ...

  8. Web Scraper 翻页——控制链接批量抓取数据

    ![](https://image-1255652541.cos.ap-shanghai.myqcloud.com/images/20190708214014.png) 这是简易数据分析系列的第 5 ...

  9. Web Scraper 翻页——控制链接批量抓取数据(Web Scraper 高级用法)| 简易数据分析 05

    这是简易数据分析系列的第 5 篇文章. 上篇文章我们爬取了豆瓣电影 TOP250 前 25 个电影的数据,今天我们就要在原来的 Web Scraper 配置上做一些小改动,让爬虫把 250 条电影数据 ...

随机推荐

  1. 用JavaScript带你体验V8引擎解析标识符过程

    上一篇讲了字符串的解析过程,这一篇来讲讲标识符(IDENTIFIER)的解析. 先上知识点,标识符的扫描分为快解析和慢解析,一旦出现Ascii值大于128的字符或者转义字符,会进入慢解析,略微影响性能 ...

  2. luogu2279_[HNOI2003]消防局的设立 贪心

    传送门 不需要树形dp 关于深度排序 当前节点到最近的消防局(f[u])>2时要建新的与u的上面(v)的上面(w) 同时w的上面和上面的上面也要更新f值 #include <bits/st ...

  3. Cannot attach the file “MvcMovie.mdf” as database “aspnet-MvcMovie”

    今天在微软开发人员官网上学习asp.net mvc5入门的时候,遇到一个棘手的问题,我是按照教程一步一步操作的,但期间遇到一个自己觉得莫名其妙的问题,教程中也没有提到这个, 在添加新字段这一章节,跟着 ...

  4. lnmp环境搭建方法

    网上目前的一键搭建方法: 命令行安装: 1.源码编译安装:(个性化配置,安装配置过程繁琐) 2.使用yum或apt直接安装:(使用编译好的二进制文件安装,速度快) 3.军哥的lnmp一键脚本安装: 4 ...

  5. OSI七层网络模型与TCP/IP四层模型

    1.OSI七层结构图: 2.TCP/IP四层结构图: 3.各层对应的协议 4.OSI七层和TCP/IP四层的区别 OSI网络模型和TCP/IP网络模型对应关系: 5.交换机工作在OSI的哪一层 如果有 ...

  6. Django上线部署之IIS

    环境: 1.Windows Server 2016 Datacenter 64位 2.SQL Server 2016 Enterprise 64位 3.Python 3.6.0 64位 4.admin ...

  7. TDH 安装 TDH-Client

    1. TDH-Client 下载 (下载分享:链接:https://pan.baidu.com/s/1ZmP4BUCiuRypCtsoAuvKRA     提取码:xsbl ) tar -vxf td ...

  8. 【CSS】Houdini, CSS的成人礼

    前情提要 CSS:老板,你看ES9,ES10都出来了,您看我的事情什么时候... W3C: 这不是正在走着流程嘛!小C你不要心急! W3C:(语重心长)你看啊,我们先(1)提个开发提案章程, 然后再批 ...

  9. java 中 size() 和 length()

    偶然发现自己不清楚 java size() 和length()是干嘛用的,总结一下: 1.java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这 ...

  10. 运行所选代码生成器时出错:“值-1超出了可接受的[0,2147483647]范围。参数名称:value”

    在使用vs2019添加mvc控制器的时候 这已经是第二次遇到这个问题了.常言道,多喝热水,重启试试.有时候当应用工作不正常,重启也许能解决问题.但是程序员通常接触不到服务器系统权限.而运维人员和公司流 ...