如何写一个爬虫 - 第一篇

这可能是一篇教你如何写爬虫的博客。

什么是爬虫

关于这个问题,网上大多数回答都是“爬虫能干什么”。

我自己对爬虫的理解:能通过某种方法,让服务器认为接收到了来自正常用户的请求并返回响应的程序,就是爬虫。

爬虫能干什么

在互联网上,人能干的,爬虫就能干。很多人不能干的,爬虫也能干。比如:

  • 知乎上最多的爬妹子图(喜闻乐见而且技术要求不高)
  • 自动选课抢课
  • 微博自动关注转发抽奖
  • 火车/飞机抢票
  • 投票刷票
  • ……

正如我上面写到的,爬虫能完成正常人类用户能做到的所有操作。不过爬虫操作比人类快得多,而且不用休息,可以夜以继日地持续执行设定好的操作。

互联网上的爬虫

首先来看一篇文章:《我收到一份<中国焦虑图鉴>》

我之前在学校里帮忙维护过一个网站,网站每天的流量大概只有不到 25% 是真实用户产生的。我用了半个多小时的时间分析了最近四天的 Nginx 日志(2018-10-23 - 2018-10-26,共 2122580 行),结果如下:

  • 2122580 所有日志
  • 1107398 恶意攻击
  • 154747 Python、Java 等语言的爬虫
  • 165487 Sogou 爬虫
  • 33024 Bing 爬虫
  • 10671 Google 爬虫
  • 8098 Baidu 爬虫
  • 151369 其他搜索引擎的爬虫

这些还仅仅是能确定的爬虫们,就已经占所有流量的 76% 了。理论上,除了搜索引擎的爬虫外,其他爬虫都只会加重服务器的负担,而不能给服务方带来好处(甚至会造成很大损失)。因此,很多网站会使用各种方法来反制爬虫。关于爬虫与反爬虫的战争,可以看一下这篇文章:《关于反爬虫,看这一篇就够了》

爬虫写的好,监狱进的早

我们来看几份判决书:

  1. 《上海晟品网络科技有限公司、侯明强等非法获取计算机信息系统数据罪一审刑事判决书》
  2. 《北京百度网讯科技有限公司与上海汉涛信息咨询有限公司其他不正当竞争纠纷二审民事判决书》
  3. 《深圳中院判决:利用网络爬虫技术抓取他人数据构成不正当竞争》

类似的事件层出不穷,爬虫本来就处在合法与违法的边缘。如果是以营利为目的进行爬取,那么是很容易进去的。望同学们对此能有自己的判断。

总结

作为爬虫教程的第一篇,这一篇并没有任何有关技术的东西,但我认为这才是任何一个人在写爬虫之前都应该知道的。约束自已的同时,也要对网络世界有足够的敬畏。