网络爬虫1 --- Web相关知识、Web网络资源请求与响应过程、HTTP协议的请求与响应

一、网络爬虫是一个软件应用,可以自动化批量获取网络资源 (网络资源下载器),网络爬虫工作于万维网(模拟浏览器行为),万维网是由无数网页和WEB服务器构成的庞大网络资源存储仓库,万维网是网络用户获取数据的主要渠道。
二、爬虫爬取的网络数据用途 :
数据分析,数据挖掘,搜索引擎(数据)(各大网站 搜索 我们搜索 一般都会有各种 然后转到相应的网站 搜索引擎爬他们 然后 我们搜索 反馈给我们),数据可视化(某app的用户数据给别人看 比如做出地图图示 某地 多少人 年龄),AI训练数据集(比如辨认男女),但是要注意爬虫只负责获取下载资源,资源如果二次加工,如果使用与爬虫无关,它就是一个网络数据采集/下载器。
三、网络爬虫的拓扑与跳转
一个网页中包含大量的链接,有些链接指向站内资源(站内跳转),某些链接指向其他网站的资源(站外跳转), 网页拥有大量(出(我链接别人)入(别人链接我)链接)这表示在万维网中网页网站之间有较强的关联性,爬虫可以依靠网页关联这个性质进行拓扑,跳转到其他站点或网页继续爬取, 理论上爬虫可以拓扑到整个万维网中所有的网页。
四、Web相关知识
1)万维网B/S架构 B = 浏览器 S = Web服务器
2)网页(html + css) index(网站首页)
html文件:网页源码文件,网页源码采用html超文本标记语言编写。
css文件: 网页样式表,通过css样式脚本语言为网页设置样式。
3)WEB服务器
与浏览器进行网络连接,提供数据支持,数据存储,业务处理等等服务。
4)HTTP协议(基于TCP实现,整体的连接过程与使用方式与TCP相同。)
超文本传输协议,浏览器与服务器交互的主要协议,用于传输网络资源(网页等等)。HTTP (标准传输协议),不安全。HTTPS (升级版传输协议),具有很高的安全性,可以完成双端认证并加密传数据。
5)URL(链接) : 统一资源定位符,网络资源地址,url具备唯一性(全网唯一)。
http: // tuba.top.com / cs/bin/tmp /20210631.jpg
http协议类型 网页域名(服务器主机名) 资源存储路径 资源名 +(可能存在其他参数)
想要名字为20210631的jpg格式的图片,这个图片在名字为tuba.top.com 的主机里,在他的cs目录下的bin目录下的tmp文件里 ,假如我现在是浏览器我想要这个图片,需要通过http协议去向tuba.top.com要。
6)链接服务器,需要知道其IP和端口
获取服务端IP (DNS域名解析器获取),分析网页域名反馈真实公网IP。
所有Web服务端使用通用端口号: http : 80,https : 443。
五、如何将一个网络资源下载下来?
我们要爬虫,先有一个URL。
第一步:通过URL解析出HTTP类型、域名、存储路径、文件名、端口和公网IP。
第二步:网络初始化 。
第三步:与web服务器进行connect连接。
链接以后怎样去与服务器进行资源交互?
第四步:HTTP请求接收与响应 。
把请求发送给服务器,服务器用状态机解析后反馈响应。
六、HTTP协议的请求与响应
1、HTTP协议经典请求方式
1)GET (请求方式)
请求头数据为纯字符串,里面用关键字段填充, 支持请求时携带参数 (请求头)
2)POST (请求方式)
请求头数据为纯字符串,支持用户自定义请求体 (请求头+请求体)
2、HTTP请求头内容: (由若干特殊字段构成的字符串)
1.请求方式 [GET or POST]
2.请求的资源URL,资源地址。
3.指定HTTP协议版本
4.ACCEPT,客户端可接收的数据类别及优先级(服务器按优先级别响应内容)
1)我能接收什么,我要跟服务器阐述清楚。比如我只能接收图片,然后我发送给服务器文本资源的请求,服务器是不会反馈给我的。
2)我可以接收文本和图片,但是接收文本的优先级比图片高,我发送的请求里面包含一个文本和一个图片,服务器先反馈给我文本,再反馈给我图片。
5.User_Agent,浏览器版本号及兼容信息
所有访问web服务器的默认都是浏览器,我们爬虫要把自己伪装成一个浏览器。
6.Host,服务端主机名(域名)
7.Connection 连接方式
http基于tcp,http一定支持长连接,tcp就是经典的长连接,客户端主动连接,然后客户端主动断开,服务端一直被动。
1)Keep-alive(长连接)
连接成功后,双方可通过该连接持续交互,直到浏览器主动断开连接,交互结束。
http也支持一种新的连接,短连接
2)close(短连接)
连接成功后, 双方可通过该连接交互一次数据, 而后服务端主动断开,交互结束。(客户端主动连接,服务端主动断开)
3、服务器解析请求,反馈响应。
HTTP响应头内容(由若干特殊字段构成的字符串)
1.服务器版本信息(apache , nginx)
2.服务器时间戳
3.服务器响应状态码 StatusCode(几个常见的)
通过响应码判断这次请求是否成功!
1)200 OK ,服务端成功反馈用户请求资源,200表示成功
2)301|302 , 服务端资源重定向 (资源还在,但是存储路径变了。同时会反馈新的链接,但是响应体里仍然是空的,因为第一次请求的时候还是旧的链接)
3)404 , 请求失败,网络资源失效不存在。
4)501|502 , 服务器异常,故障。
4.请求资源的大小
响应体内容
响应的资源内容(文本、二进制、视音频流)

响应头和响应体之间用\r\n\r\n分割,http协议传输用html编写的网页,在html里面 \r\n 意味着换行,两对\r\n就是一个空行。我们在构造请求头的时候换行也用\r\n,且请求头后也要有空行,没有请求体也要有空行。我们解析响应头,保存响应体。下载就是将响应体里面的东西保存到文件里。

我们构造请求头发送,接收反馈的响应,不一次性读完,先尽可能的读取完响应头,一般请求头和响应头都有一个固定大小,不会超过4k。所以我们第一次读取的是响应头+部分响应体,响应头和部分响应体之间有一个空行,找到空行,将响应头和空行保存到res_head数组,将部分响应体保存到文件里 继续循环读取剩余响应体到文件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值