爬虫基础理论总结

一、什么是爬虫

<b>爬虫:又称网页蜘蛛,网络机器人,从互联网上自动抓取数据的程序,通俗地讲,就是可以爬取浏览器中看得到的数据

二、爬虫的基本流程

  • 1、分析网站,得到目标url
  • 2、根据url,发起请求,获取页面的HTML源码
  • 3、从页面源码中提取数据:
  • a、提取到目标数据,做数据的筛选和持久化存储
  • b、从页面中提取新的url地址,继续执行第二步操作
  • 4、爬虫结束:
    所有的目标url都提取完毕,并且得到数据了,再也没有其他的请求任务了,这时候就意味着爬虫结束了

三、网页的三大特征

  • 1、每一个网页都有一个唯一的url(统一资源定位符)来进行定位
  • 2、网页都是通过HTML(超文本标记语言)文本展示的
  • 3、所有的网页都是通过http(超文本传输协议)或https协议来传输的

四、通用爬虫和聚焦爬虫

(一)通用爬虫:

是搜索引擎的重要组成部分

1、 目的:

尽可能的将所有的互联网上的网页下载到本地,经过预处理(去噪、分词、去广告等等),最终将数据存储到本地,做一个镜像备份,形成一个检索系统

2、通用爬虫抓取网页的流程:

(1)选取一部分的URL作为种子URL,将这些URL放入到带爬去的任务队列里面

(2)从带爬取的任务队列中取出URL,发起请求,将获取到的网页源码存储到本地,并将已经爬取过的URL放入已爬取的队列中

(3)从已爬取URL的响应结果中,分析提取其他的URL地址,继续添加到待爬取队列中,之后就是不断的循环,知道所有的URL都提取完毕

3、通用爬虫中的种子URL如何获取

(1)通过网站提交自己的网站地址(https://ziyuan.baidu.com/linksubmit/url

(2)搜索引擎会和DNS服务商(DNS服务:将我们的域转换为对应IP的一种技术)合作,拿到最新的网站地址

(3) 网站中包含的其他外链

4、通用爬虫的整体流程:

数据的获取 -> 预处理(分词,去噪,去广告……)-> 存储 -> 提供检索接口|排名(网站排名)

5、网站排名:

(1)根据用户的访问量,网站的流量越多,越靠前

(2)竞价排名:谁出价高,谁就排在前面

6、 通用爬虫的缺点:

(1)必须遵守robot协议
就是一个规范,告诉搜索引擎,哪些目录下的资源允许爬取,哪些目录下的资源不允许爬取(https://www.taobao.com/robots.txt

"User-agent":该项值用来表示是哪家的搜索引擎
"allow":允许被爬取的URL
"disllow":不允许被爬取的URL

(2)搜索引擎返回的都是网页,并且返回的90%的都是无用的数据

(3)不能够根据不同的用户的需求或者检索结果返回不同的结果

(4)通用爬虫对于媒体的文件不能够获取

(二)聚焦爬虫:

聚焦补充是面向主题的爬虫,再爬取数据的过程中会对数据进行筛选,往往只会爬虫与需求相关的数据

五、Robot.txt是什么,里面的参数是什么意思

1、Robot:

(也叫爬虫协议、机器人协议等),全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

2、Robot协议中的参数:
(1)User-agent: Baiduspider

识别是哪家的爬虫

(2)Allow: /article

允许爬取的目录

(3)Allow: /oshtml

(4)Allow: /ershou

(5)Allow: /$

(6)Disallow: /product/

不允许爬取的目录

(7)Disallow: /

六、七层协议(OSI协议:从上向下)

应用层

为用户的应用程序提供网络服务的(HTTP、HTTPS、FTP……)

表示层

负责端到端的数据信息可以被另一个主机所理解和识别,并且按照一定的格式将信息传递到会话层

会话层

会话层是管理主机之间的会话进程,负责建立,管理,和终止会话进程

传输层

进行数据传输的(TCP UDP)

TCP和UDP

区别 TCP UDP
传输方式上 面向连接的 非面向连接的
传输的数据 传输的是数据流 传输的是数据包(可能会出现丢包)
传输的效率
传输的稳定性

网络层

路由器

数据链路层

网桥 交换机

物理层

网线 网卡 集线器 中继器

七、http和https协议

HTTP协议:

HyperText Transfer Protocol 中文名叫超文本传输协议: 是用于从网络传送超文本数据到本地浏览器的传送协议,端口号:80

HTTPS协议

Hypertext Transfer Protocol over Secure Socket Layer 简单讲是HTTP的安全版,在HTTP协议的基础上加入SSL层(HTTP+SSL),端口号:443

八、url的基本组成部分

URI

Uniform Resource Identifier:统一资源标识符

URL

Uniform / Universal Resource Locator的缩写:统一资源定位符,是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。

URN

Universal Resource Name:统一资源名称,只命名资源而不指定如何定位资源

九、发起一个请求基本流程

  1. 当用户 在浏览器的地址栏中输入一个URL并按回车键之后(会先经过DNS服务将域名解析为ip),浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种方法。
  1. 当我们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。
  1. 浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。
  1. 当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。

十、get请求和post请求的区别

  • GET是从服务器上获取数据,POST是向服务器传送数据
  • GET请求参数显示,都显示在浏览器网址上,HTTP服务器根据该请求所包含URL中的参数来产生响应内容,即“Get”请求的参数是URL的一部分。 例如: http://www.baidu.com/s?wd=Chinese
  • POST请求参数在请求体当中,消息长度没有限制而且以隐式的方式进行发送,通常用来向HTTP服务器提交量比较大的数据(比如请求中包含许多参数或者文件上传操作等),请求的参数包含在“Content-Type”消息头里,指明该消息体的媒体类型和编码.

十一、请求头参数和响应头里面的参数

请求头参数

  1. User-Agent

User-Agent:是客户浏览器的名称。

  1. Cookie

浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。

  1. Referer

表明产生请求的网页来自于哪个URL,用户是从该 Referer页面访问到当前请求的页面。这个属性可以用来跟踪Web请求来自哪个页面, 是从什么网站来的等。

有时候遇到下载某网站图片,需要对应的referer,否则无法下载图片,那是因为人家做了防盗链,原理就是根据referer去判断是否是本网站的地址 ,如果不是,则拒绝,如果是,就可以下载;

  1. Content-Type

POST请求里用来表示的内容类型。

举例:Content-Type = Text/XML; charset=gb2312:
指明该请求的消息体中包含的是纯文本的XML类型的数据,字符编码采用“gb2312”。

  1. Host (主机和端口号)

对应网址URL中的Web名称和端口号,用于指定被请求资源的Internet主机和端口号,通常属于URL的一部分。

  1. X-Requested-With: XMLHttpRequest

表示是一个Ajax异步请求

  1. Connection (链接类型)

表示客户端与服务连接类型

  • Client 发起一个包含 Connection:keep-alive 的请求,HTTP/1.1使用 keep-alive 为默认值。
  • Server收到请求后:

(1) 如果 Server 支持 keep-alive,回复一个包含 Connection:keep-alive 的响应,不关闭连接;
(2) 如果 Server 不支持 keep-alive,回复一个包含 Connection:close 的响应,关闭连接。
(3) 如果client收到包含 Connection:keep-alive 的响应,向同一个连接发送下一个请求,直到一方主动关闭连接。

  • keep-alive在很多情况下能够重用连接,减少资源消耗,缩短响应时间,比如当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都去请求建立连接。
  1. Upgrade-Insecure-Requests (升级为HTTPS请求)

升级不安全的请求,意思是会在加载 http 资源时自动替换成 https 请求,让浏览器不再显示https页面中的http请求警报。

HTTPS 是以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 HTTP 请求,一旦出现就是提示或报错。

  1. Accept (传输文件类型)

指浏览器或其他客户端可以接受的MIME(Multipurpose Internet Mail Extensions(多用途互联网邮件扩展))文件类型,服务器可以根 据它判断并返回适当的文件格式。

举例:

Accept: /:表示什么都可以接收。
Accept:image/gif:表明客户端希望接受GIF图像格式的资源;
Accept:text/html:表明客户端希望接受html文本。
Accept: text/html, application/xhtml+xml;q=0.9, image/*;q=0.8:表示浏览器支持的 MIME 类型分别是 html文本、xhtml和xml文档、所有 的图像格式资源。

q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容。若没有指定q值,则默认为1,按从左到右排序顺序;若被 赋值为0,则用于表示浏览器不接受此内容类型。

Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;Application:用于传输应用程序数据或者二进制数据。(http://blog.sina.com.cn/s/blog_866e403f010179f1.html)

  1. Accept-Encoding(文件编解码格式)

指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应 之后先解码,然后再检查文件格式,许多情形下这可以减少大量的下载时间。

举例:

Accept-Encoding:gzip;q=1.0, identity; q=0.5, *;q=0
如果有多个Encoding同时匹配, 按照q值顺序排列,本例中按顺序支持 gzip, identity压缩编码,支持gzip的浏览器会返回经过gzip编码的HTML页面。
如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。

  1. Accept-Language(语言种类)

指出浏览器可以接受的语言种类,如en或en-us指英语,zh或者zh-cn指中文,当服务器能够提供一种以上的语言版本时要用到。

  1. Accept-Charset(字符编码)

指出浏览器可以接受的字符编码。

举例:

Accept-Charset:gb2312,utf-8
gb2312:标准简体中文字符集;
utf-8:UNICODE 的一种变长字符编码,可以解决多种语言文本显示问题,从而实现应用国际化和本地化。

响应头参数

  1. Cache-Control:must-revalidate, no-cache, private。

是否需要缓存资源

  1. Connection:keep-alive

保持连接

  1. Content-Encoding:gzip

web服务器支持的返回内容压缩编码类型

  1. Content-Type:text/html;charset=UTF-8

文件类型和字符编码格式

  1. Date:Sun, 21 Sep 2016 06:18:21 GMT

服务器消息发出的时间

  1. Expires:Sun, 1 Jan 2000 01:00:00 GMT

响应过期的日期和时间

  1. Pragma:no-cache

这个含义与Cache-Control(是否缓存资源)等同。

  1. Server:Tengine/1.4.6

服务器和服务器版本

  1. Transfer-Encoding:chunked

这个响应头告诉客户端,服务器发送的资源的方式是分块发送的。

  1. Vary: Accept-Encoding

告诉缓存服务器,缓存压缩文件和非压缩文件两个版本,现在这个字段用处并不大,因为现在的浏览器都是 支持压缩的。 响应状态码 响应状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

Cookie 和 Session:

服务器和客户端的交互仅限于请求/响应过程,结束之后便断开,在下一次请求时,服务器会认为新的客户端。
为了维护他们之间的链接,让服务器知道这是前一个用户发送的请求,必须在一个地方保存客户端的信息。

Cookie:通过在 客户端 记录的信息确定用户的身份。

Session:通过在 服务器端 记录的信息确定用户的身份。

十二、请求常见的状态码

200:

请求成功

301:

永久重定向

302:

临时重定向

400:

客户端错误

401:

未授权

403:

服务器拒绝访问

404:

页面未找到

405:

请求方式不对

408:

请求超时

500:

服务器错误

503:

服务器不可用

十三、bytes类型和str字符串类型的相互转换,bytes和bytearray的区别

转换

将bytes类型的数据转换为字符串使用decode('编码类型')
将字符串转换为bytes类型的数据使用encode('编码类型')

区别

bytearray和bytes类型的数据是有区别的:前者是可变的,后者是不可变的

十四、如何发起一个get请求

1、使用urllib发送请求

2、得到url目标地址

3、使用urlopen方法模拟浏览器发起请求

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

推荐阅读更多精彩内容