坑边闲话:最近写了爬虫小项目,该项目可以提取某网站的网页的某些字段,然后它们存储起来,最后下载一部分图片。从表面上看,这个项目非常简单,应该是「会者不难,难者不会」吧。趁着思路还清晰,我就把整个自学的过程写下来,以待日后帮助像我这样的爬虫初学者。

人浏览网页的时候,可以用眼睛去浏览,然后用大脑分析页面的信息。然而,页面毕竟是一串由文本组成的经过渲染的产品,所以页面的源代码是有规律可循的。如果我们能把握住这个页面的规律,就可以自行「下载」某些页面上的信息。这对于经常浏览某些网页并进行信息获取的人来说,是非常有帮助的。

所以,我们先总结一下,爬虫程序有什么作用吧:

  • 自动化下载网页数据,并对数据进行结构化整理
  • 省去了自己复制、粘贴的重复劳动时间,节约生命
  • 在大规模下载数据的时候,手工作业几乎不能完成,而爬虫程序可以自动化去执行
  • 规避手工下载数据的错误。很多时候,复制、粘贴可以达到我们的目的,但是某些网页的情况比较特殊,稍不留神就复制少了、复制错了。爬虫不会去看,它只会按照查询语句去提取,所以完全避免了手工作业的失误问题。

除此之外,了解 Javascript、CSS、HTML 的一些知识,有助于我们在日常工作、学习中灵活运用网页源代码,同时也能养成主动去应用 Google Chrome、Mozilla Firefox 的很多后台功能,以实现高效检索、自动化办公。

所以,一个合格的爬虫程序应该具有下面的基本特征:

  • 可以模仿一个浏览器对 web 服务器发起访问、获得响应、对响应进行处理的全部过程;
  • 可以支持保存 Cookie
  • 接口应该很丰富,最好是提供某种编程语言来进行详细配置,毕竟越强大的东西,内在机理越复杂
  • 性能要高,不能像 Selenium 那样去模仿人点击鼠标的操作进而导致很慢的情况

目前来看,比较适合的爬虫程序有那么一些,但是主流的还是 Scrapy. 这是一个基于 Python 语言开发的爬虫程序,比较好用,性能良好。Scrapy 的配置、爬虫细节的编程都是用 Python 进行,所以基本上可以做到一门语言搞定一切。

本文是接下来的几篇文章的序曲,接下来我会介绍 Javascript 的 AJAX 加载、XPATH 查询、图片、文件的本地保存等细节,敬请关注。