23

[爬虫手记] 我是如何在3分钟内开发完一个爬虫的 - 个人文章 - SegmentFault 思否

 4 years ago
source link: https://segmentfault.com/a/1190000019303815?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

开发爬虫是一件有趣的事情。写一个程序,对感兴趣的目标网站发起HTTP请求,获取HTML,解析HTML,提取数据,将数据保存到数据库或者存为CSV、JSON等格式,再用自己熟悉的语言例如Python对这些数据进行分析生成酷炫的图表。这个过程是不是很兴奋?

然而,开发爬虫并不是一件简单的事情。通常开发一个简单爬虫往往需要编写好几个模块:下载器、解析器、提取规则、保存模块。实现这个简单爬虫用Python实现至少需要编写10-20行代码,而且如果考虑并发和调度的话,通常要编写50行代码以上。更麻烦的是,如果要管理多个爬虫实现爬虫的工程化,需要对各个网站的爬虫代码提取共用模块和参数,这个过程需要相当的工程经验和时间积累。其实,一般各大网站的结构大同小异,仅需要更改提取规则即可。很多爬虫工程师要在大型项目中编写成百上千的提取规则,对于没有任何管理工具的人来说,这基本上是个噩梦。

可配置爬虫

幸运的是,Crawlab版本v0.2.1中新增功能可配置爬虫可以让工程师从这些重复性工作中解放开来。Crawlab的可配置爬虫只需要爬虫工程师配置一些必要的CSS/XPath提取规则,就可以完成一个常规的爬虫开发。根据作者实验,对于CSS选择器或XPath稍微熟悉点的工程师,用可配置爬虫开发完一个包含五脏俱全的常规爬虫只需要1-3分钟。

Crawlab的可配置爬虫是基于Scrapy的,因此天生是支持并发的。而且,可配置爬虫完全支持Crawlab自定义爬虫的一般功能的,因此也支持任务调度、任务监控、日志监控、数据分析。

安装运行Crawlab

Crawlab是一个专注于爬虫的集成了爬虫管理、任务调度、任务监控、数据分析等模块的分布式爬虫管理平台,非常适合对爬虫管理、爬虫工程化有要求的开发者及企业。

关于Crawlab的详细介绍请参考之前的文章:

以下是Crawlab的安装和运行步骤,时间大概在10-20分钟。

安装步骤

运行步骤

如何开发并运行可配置爬虫

下面总算到了爬虫开发时间。这里将以网易24小时排行新闻为例,开发一个相应的可配置爬虫,整个流程应该不超过3分钟。

Crawlab跑起来之后,在浏览器中打开网址http://localhost:8080,导航到爬虫。在点击添加爬虫按钮。

爬虫列表

点击可配置爬虫

爬虫列表-添加爬虫

输入完基本信息,点击添加

爬虫列表-爬虫信息

添加完成后,可以看到刚刚添加的可配置爬虫出现了在最下方,点击查看进入到爬虫详情

1460000019303821

点击配置标签进入到配置页面。接下来,我们需要对爬虫规则进行配置。

1460000019303822

这里已经有一些配置好的初始输入项。我们简单介绍一下各自的含义。

这也是爬虫抓取采用的策略,也就是爬虫遍历网页是如何进行的。作为第一个版本,我们有仅列表仅详情页列表+详情页

  • 仅列表页。这也是最简单的形式,爬虫遍历列表上的列表项,将数据抓取下来。
  • 仅详情页。爬虫只抓取详情页。
  • 列表+详情页。爬虫先遍历列表页,将列表项中的详情页地址提取出来并跟进抓取详情页。

这里我们选择列表+详情页

列表项选择器 & 分页选择器

列表项的匹和分页按钮的匹配查询,由CSS或XPath来进行匹配。

开始URL

爬虫最开始遍历的网址。

遵守Robots协议

这个默认是开启的。如果开启,爬虫将先抓取网站的robots.txt并判断页面是否可抓;否则,不会对此进行验证。用户可以选择将其关闭。请注意,任何无视Robots协议的行为都有法律风险。

列表页字段 & 详情页字段

这些都是再列表页或详情页中需要提取的字段。字段由CSS选择器或者XPath来匹配提取。可以选择文本或者属性。

在检查完目标网页的元素CSS选择器之后,我们输入列表项选择器、开始URL、列表页/详情页等信息。注意勾选url为详情页URL。

1460000019303823

点击保存、预览,查看预览内容。

1460000019303824

OK,现在配置大功告成,终于可开始跑爬虫了!

你唯一需要做的,就是点击运行按钮并确认。点击概览标签,你可以看到任务已经开始运行了。

1460000019303825

点击创建时间链接导航到任务详情,点击结果标签,你就可以看到抓取到的结果已经保存下来了。

1460000019303826

怎么样,这个过程是不是超级简单?如果熟练的话,整个过程可以在60秒内完成!就跟玩魔方一样,越玩越熟练!

本文利用Crawlab的可配置爬虫功能实现了3分钟内对网易新闻24小时新闻排行榜的抓取。同样的过程可以实现在其他类似的网站上面。虽然这是一个经典的“列表+详情页”的抓取模式,比较简单,后续我们还会开发更多的更复杂的抓取模式,实现更多的抓取需求。Crawlab的可配置爬虫降低了爬虫的开发时间,增加了爬虫开发效率,完善了工程化水平,将爬虫工程师从日常的繁琐配置工作中解放出来。配置工作可以交给初级爬虫工程师或者外包人员来做,而高级爬虫工程师会把精力放在更复杂的爬虫工作上来,例如反爬、动态内容、分布式爬虫等等。

Github: tikazyq/crawlab

如果感觉Crawlab还不错,对你的日常工作或企业有帮助的话,请加作者微信拉入开发交流群,大家一起交流关于Crawlab的使用和开发。

1460000018523589?w=674&h=896


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK