记一次完整的数据请求返回流程

前言

爬虫对于每个人的体验估计都是不同的,因为每个人的起点不同,在本篇内容中,根据我的理解,阐述一下请求的整个流程,由点及面的讲述那些我们没注意到的问题。

浏览器访问网址

1. 以访问 百度首页 为例,输入 www.baidu.com 并回车。

2. 浏览器检索本地缓存DNS记录、 Host 文件,查询 www.baidu.comip 地址,如果没有找到,浏览器向 DNS 服务器 请求解析该 URL 中的域名所对应的 IP 地址。

3. 浏览器通过 ip 地址及默认端口号(http:80,https:443)携带浏览器身份信息(Header),构建请求行本地浏览器和服务器经过 三次握手 建立TCP连接,请求获得(get)服务器的内容(可以理解为售票窗口,根据你买票区间(url)不同,响应不同内容)。

4. 返回的数据流包含有 响应头状态码 、 响应体等关键信息,响应的文件格式多为:HTMLJSONbytesjscss

5. 浏览器将响应的 HTML 进行解析,由上向下,将其中引入的 jscss 交给浏览器的引擎进行渲染,其中 HTML 负责网页的内容, js 控制页面交互,css 控制样式布局。

6. 页面经过 jscss 的渲染,呈现出我们看到的页面。

爬虫访问网址

爬虫:伪装成浏览器,获取内容,需要注意:

1. 请求工具默认的请求头中,User-Agent 是默认版本号,例如: requests-0.21

2. 请求工具只能获得 HTML 中的数据,如果页面是后来 js 生成的,则需要单独抓取 异步加载xhr 的网址。

3. HTTP是无状态的,服务器保存session,客户端存储cookie,两两相对,用于记录状态。

4. 网页中的验证码,本质也是服务器下发来的,将结果保存到了session中,等携带cookie的客户端来对比确认。

 

版权声明:
作者:hyzsj0106
链接:https://www.cxywy.com/?p=470
来源:程序员无垠
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录