爬虫概述
为什么要做网络爬虫
我们目前正处于人工智能和大数据时代,爬虫除了能够获取互联网的数据以外还能够帮我们完成很多繁琐的手动操作,这些操作不仅仅包括获取数据,还能够添加数据,比如:
- 投票
- 管理多个平台的多个账户(如各个电商平台的账号)
- 微信聊天机器人
实际的应用远不止上面这些,但是上面的应用只是除开数据本身的应用而已,数据本身的应用也是很广的:
- 机器学习语料库
- 垂直领域的服务(二手车估值)
- 聚合服务(去哪儿网,美团)
- 新闻推荐(今日头条)
- 预测和判断(医疗领域)
那数据从何而来?
-
企业产生的用户数据
:百度指数、阿里指数、TBI腾讯浏览指数、新浪微博指数 -
数据平台购买数据
:数据堂、国云数据市场、贵阳大数据交易所 -
政府/机构公开的数据
:中华人民共和国国家统计局数据、世界银行公开数据、联合国数据、纳斯达克。 -
数据管理咨询公司
:麦肯锡、埃森哲、艾瑞咨询 -
爬取网络数据
:如果需要的数据市场上没有,或者不愿意购买,那么可以选择招/做一名爬虫工程师,自己动手丰衣足食。拉勾网Python爬虫职位
所以爬虫能做的功能非常多,也就造就了爬虫的需求也是越来越旺盛,但是很多有过后端开发的人员却觉得爬虫很简单,很多人觉得爬虫用一个库(requests)去获取一个html然后解析就行了,实际上爬虫真的这么简单吗?
首先学习之前我们来问几个问题:
- 如果一个网页需要登录才能访问,怎么办?
- 对于上面的问题,很多人说模拟登录就行了,但实际上很多网站会采用各种手段去加大模拟登录的难度,如:各种验证码,登录逻辑的各种混淆和加密、参数的各种加密,这些问题都怎么解决?
- 很多网站只能手机登录怎么办?
- 很多网站为了用户体验和服务器优化,会将一个页面的各个元素采用异步加载或者js加载的方式完成?这些你有能力分析出来吗?
- 作为一个网站,各种反爬的方案也是层出不穷,当你的爬虫被反爬之后,你如何去猜测对方是怎么反爬的?
- 一个爬虫怎么发现最新的数据?如何发现一个数据是否被更新了?
如果你只是做一个简单的爬虫,比如你的爬虫就是一次性的,一次性获取某个网站的某些数据这样当然就简单了,但是你要做一个爬虫服务,你就必须要面对上面的问题,这上面还没有提到数据的提取和解析等等
接下来就开始我们的spider之旅吧
爬虫预热知识
HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层。
SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全。
HTTP的端口号为80,
HTTPS的端口号为443