爬虫001

爬虫概述

——骑猪追火车

1、目录清单

1、爬虫简介

2、通用爬虫和聚焦爬虫

3、网络请求是怎么回事儿

4、网络数据抓包

2、课堂内容

2.1、爬虫简介

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

每个公司都是要发展的,他们对市场上的数据很看重,就会去网络上搜索自己所需要的数据,获取并进行分析,用来指导公司的大方向。这些数据提供者是从如何得到数据的?一种是可以共享的免费数据,一种是比较有针对性的私密数据。免费数据一般都是任何人都可以浏览的,私密数据大多都是禁止查阅或者收费查阅,数据来源大致有这几个方面:

爬虫新手5问 what? why?where?how?when?

快速了解爬虫

2.2、通用爬虫和聚焦爬虫

根据爬虫的应用场景不同大致分为两种类型:
通用爬虫和聚焦爬虫

2.2.1、通用爬虫

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

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

通用爬虫的一些局限性:
  • 通用搜索引擎所返回的结果都是网页,而大多情况下,网页里90%的内容对用户来说都是无用的。

  • 不同领域、不同背景的用户往往具有不同的检索目的和需求,搜索引擎无法提供针对具体某个用户的搜索结果。

  • 万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎对这些文件无能为力,不能很好地发现和获取。

  • 通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询,无法准确理解用户的具体需求。

针对上述局限性,聚焦爬虫技术得以广泛使用

2.2.2、聚焦爬虫

程序开发人员针对具体的需求,针对性的开发获取数据的程序,通过程序的自动化操作,完成人工筛选过程~[自定义采集方式、自定义筛选条件、自定义过滤措施->私人订制!],不需要遵循robot协议!可以获取到更加准确的数据!

so -- 我们的目标聚焦爬虫

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:定义心跳消息诊断的实现
    ————————————————————————————————
    常规的python项目中,在实际使用操作时我们一般使用get/post两种请求方式,通过get/post两种请求方式完成服务器之间的常规数据交互,已经可以满足我们项目的大部分情况
  • GET请求:访问的url地址中可以包含传递给服务器的参数,参数必须是字符串,url地址的长度浏览器本身没有限制,但是受到服务器最大接收数据长度的限制,所以get请求一般用于传输不需要保密的长度收到限制的字符串数据。处理效率较高
  • POST请求:访问的url地址中不会出现传递给服务器的参数,参数会包含在请求体中进行处理,主要传递字符串数据,可以传递二进制数据,传递数据的大小浏览器同样没有做什么限制,但是服务器端会根据实际需要进行数据量的限制,避免传递过大的数据到底服务器资源不够使用!所以post请求一般用于传递较为敏感的不能暴露给别人看到的并且数据较大的数据

2.3.3、请求头 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请求传递的数据的类型

2.3.4、响应头 response header

服务器正常处理了需要操作的业务之后,就会以响应的方式返回给客户端浏览器对应的数据,响应对象本身就会包含对于响应数据内容的描述信息。常见的响应头信息:

  • Cache-control:must-revalidate|no-cache|private
    该响应头信息非常重要,如果响应头明确Cache-control:max-age=0或者no-cache表示不缓存任何数据,任何时间再次发起请求都从服务器获取新的数据;同样如果指定了Cache-control:max-age=102460*60则表示在指定的时间段获取新的数据直接从缓存中提取,不需要从服务器获取;如果响应头中不包含Cache-control信息,则所有数据全部采用默认缓存方式

  • Connection:keep-alive|close
    用于高速客户端的请求方式是否保持连接,某些情况下保持连接是必要的,可以在多次发起连接时重复使用打开的连接方式,有助于提高处理效率

  • Content-encoding:gzip
    响应内容编码方式,一般默认gzip,就是告诉客户端服务器响应的数据内容是经过gzip压缩处理的,需要客户端解压缩解码操作

  • Content-type:text/html;charset=UTF-8
    响应数据内容类型,一般直接描述内容的文件属性和编码方式,方便客户端浏览器可以针对文件属性使用指定方式进行加载,通过指定的编码方式进行解码操作正常显示加载的数据内容

  • Date:Sat, 06 Jan 2018 02:48:36 GMT
    响应数据传输时间,HTTP协议标准指定使用GMT格林尼治时间

  • Expires:Sat, 13 Jan 2018 01:00:07 GMT
    过期时间,指定某个资源的过期时间,过期之前通过缓存直接提取数据而不是从服务器获取数据

  • Server:BWS/1.1
    服务器信息描述

  • Transfer-encoding:chunked
    响应数据内容分块

2.3.5、HTTP响应状态码

状态码由三位数字组成,第一个数字定义了响应的类别,有五种情况:

  • 1xx:指示信息–表示请求已接收,继续处理
  • 2xx:成功–表示请求已被成功接收、理解、接受
  • 3xx:重定向–要完成请求必须进行更进一步的操作
  • 4xx:客户端错误–请求有语法错误或请求无法实现
  • 5xx:服务器端错误–服务器未能实现合法的请求
    常见的状态响应码
编码 描述
200 请求已成功,请求所希望的响应头或数据体将随此响应返回。
400 客户端请求有语法错误,不能被服务器所理解
403 服务器收到请求,但是拒绝提供服务
404 请求资源不存在,eg:输入了错误的URL
500 服务器发生不可预期的错误

and so so

2.4、网络数据抓包

进行网络爬虫程序开发之前,首先针对网络数据进行定位分析非常重要,对于网络数据的定位处理通常使用抓包工具进行操作,常用的抓包工具如浏览器F12工具、Fiddler、wireshark等等,在爬虫处理过程中,使用较多的是F12网络工具和Fiddler。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容