爬虫总结

爬虫入门

一、爬虫简介

在各行各业如火如荼快速发展的今天,市场是决定一家公司是否可持续发展最重要的一个衡量指标,市场的定位和发展核心是对行业数据的分析,对于数据的分析必须进行大量数据的统计分析才能得到一个比较中肯的处理建议,那么问题就来了~分析市场的行业数据,从哪里才能得到呢?

当数据开始变得敏感开始变得值钱起来(一直都很值钱)之后,很多官方或者民间的机构,开始就数据市场展开了新一轮的竞争,如官方会提供各种数据的统计信息方便大家了解目前的民生情况,百度提供了搜索引擎数据方便上网的时候进行的快速检索,腾讯指数提供了对于时下流行关键词的指数分析方便对于某些数据的统计信息的提取等等,总的来说~数据提供者一般都提供两种数据,一种可以共享的免费数据,一种比较有针对性的私密数据;免费数据可以供所有人查看,但是私密数据在一定程度上可以选择收费查阅或者直接禁止查阅,目前对于数据的来源一把都有如下方式:

  1. 企业分析数据,如百度指数、腾讯指数、阿里指数等等
  2. 数据平台数据,如数据堂,国云数据市场等等
  3. 政府机构数据,如纳斯达克指数、国家统计局数据等等
  4. 数据咨询公司,如艾瑞咨询等等
  5. 网络爬虫采集

问题1:并不是所有的公司都可以付费购买数据

问题2:并不是所有的公司都满足于免费的数据?!

问题3:那么数据从哪里来?

网络爬虫 ,主要是针对网络上的数据通过编程的方式使用程序自动采集的一种手段,公司除了从第三方平台直接使用免费数据或者购买数据之外,更多的是通过网络爬虫的方式让爬虫工程师负责采集公司所需要的数据!这也是为什么爬虫工程师非常吃香的原因!

2. 通用爬虫和聚焦爬虫

一般情况下,根据爬虫程序的应用场景的不同,可以将爬虫程序大致分为两种类型:通用爬虫和聚焦爬虫

通用爬虫通用爬虫是网络搜索引擎的一部分,遵循爬虫的robot协议,负责采集网络中的网页信息内容并建立索引,在自己的搜索引擎服务器上建议网络信息的索引镜像备份文件,达到对网络上的信息内容可以快速检索的目的。

robot协议:是关于网络爬虫的一种约定的协议,robot协议明确告诉了通用网络爬虫,哪些数据内容是可以爬取的,哪些数据内容是不允许爬虫采集的,如果是合法合规的爬虫程序,必须遵循robot协议约定的采集内容区域,否则可能涉及到维权行为!

聚焦爬虫: 聚焦爬虫是通过编程的方式针对特定的需要进行数据定向采集的一种手段,能更好的更加准确的采集用户需要的数据,在一定程序上能很好的满足业务数据需要。缺点在于聚焦爬虫的编码工作比较繁琐,针对不同类型的数据采集工作,需要定制化的开发不同的程序代码。然而~瑕不掩瑜的是,定向爬虫由于其特定收的采集手段,尤其是程序开发人员对于问题处理的操作方式愈发先进和自动化,聚焦爬虫更加受到公司的欢迎!

2.3. 网络请求那些事儿

网络中的数据,更多的操作是对于目标服务器上的网页数据的方式,网页数据的访问一般使用的都是HTTP和HTTPS协议;通过浏览器进行网页访问的过程中,在请求的请求头信息中包含了客户端浏览器的身份信息;在响应数据中包含了对于响应内容的描述信息等

2.3.1.HTTP和HTTPS协议

HTTP协议是超文本传输协议,是网页访问过程中最常用的一种协议,用于传输超文本标签描述的数据内容。默认访问端口:80

HTTPS协议是提供了安全通道的HTTP协议,在网页数据访问过程中,对于访问的数据进行了数字签名实现了非对称的数据加密方式以保障数据的安全性。默认访问端口:443

在指定的访问协议写,进行数据资源的访问,通过网络统一资源定位符URL进行访问,一般情况下,一个完整的请求URL主要包含如下几个部分:

http://www.baidu.com/s?wd=url

[访问协议]://[主机域名][:端口号]/[资源路径][?查询字符串]

2.3.2.请求方式

HTTP1.1协议标准规定了8中常规请求方式,分别如下:

  • GET:定义用于从服务器获取数据
  • POST:定义用于向服务器更新数据
  • PUT:定义用于向服务器提交数据
  • DELETE:定义用于在服务器中删除指定数据
  • OPTIONS:定义客户端可以通过请求查询服务器处理信息
  • HEAD:定义用于获取请求内容的报文头信息
  • CONNECT:定义可以通过管道的方式连接
  • TRACE:定义心跳消息诊断的实现

常规的web项目中,在实际使用操作时我们一般使用get/post两种请求操作方式,通过get/post两种请求方式完成和服务器之间的常规数据交互已经可以满足我们项目的大部分情况

  • GET请求:访问的url地址中可以包含传递给服务器的参数,参数必须是字符串,url地址的长度浏览器本身没有限制,但是受到服务器最大接收数据长度的限制,所以get请求一般用于传输不需要保密的长度收到限制的字符串数据。处理效率较高
  • POST请求:访问的url地址中不会出现传递给服务器的参数,参数会包含在请求体中进行处理,主要传递字符串数据,可以传递二进制数据,传递数据的大小浏览器同样没有做什么限制,但是服务器端会根据实际需要进行数据量的限制,避免传递过大的数据到底服务器资源不够使用!所以post请求一般用于传递较为敏感的不能暴露给别人看到的并且数据较大的数据

随着web软件的发展,除了常规的请求操作方式之外,新的请求处理方式RESTful风格也逐步的在很多软件中开始应用,在RESTful处理风格中,经常使用如下四种请求方式:

  • GET: 用于从服务器中获取数据
  • POST:用于在服务器中更新数据
  • DELETE:用于在服务器中删除指定数据
  • PUT: 用于向服务器提交新的数据

并且在处理过程中,和服务器交互的参数有可能会包含在Url地址中,这样更加提高了参数的安全性。

2.3.2.请求头request header

请求头信息是请求数据的重要组成部分之一,包含了客户端请求的身份标识等重要信息,就请求头简单了解如下内容:

  • Host:访问web资源的网络域名和端口号
  • Connection: 连接类型,一般当下浏览器都会发送一个这样数据:Connection:keep-alive给对应的服务器,keep-alive是保持连接的意思,也就是长连接的意思,如果服务器支持客户端keep-alive长连接,会返回包含keep-alive的响应数据表示建立长连接,可以继续进行操作;如果服务器不支持就直接返回close关闭连接操作
  • Upgrade-insecure-requests:请求升级,就是当用户在通过http协议访问当前资源数据时,自动替换为https安全访问协议并且不提示警告信息
  • User-agent:用户代理,用于代理客户发起请求的工具,一般表示浏览器,描述访问网页的浏览器的信息
  • Accept:接受数据类型描述;如Accept:text/html;表示客户端可以接收的数据是html网页文档数据;Accept:/;表示客户端可以接收任何数据
  • Accept-encoding:接受文件的解码格式,一般传输的内容如:Accept-encoding:gzip;q=1.0;identify;q=0.5;*;q=0,表示如果有返回多种数据内容,首先匹配gzip压缩的文档内容,如果不是通过gzip压缩的格式,就匹配identify压缩编码格式;否则就接受任意编码格式的数据
  • Accept-language:客户端的语言类型,当服务器支持指定的语言类型时,返回给客户端指定的国际化语言内容;
  • Referer:请求来源,也就是当前网页是从哪个网页发起的请求,一般用于反盗链操作
  • Cookie:发送给服务器的cookie数据,通过请求头中的cookie属性将客户端的cookie数据传递给服务器进行处理
  • Content-type:内容类型,一般在POST请求中有效,表示指定post请求传递的数据的类型




你可能感兴趣的:(爬虫总结)