案例目的:
1:知道一个网站域名,怎么用代码将其解析为IP地址(DNS解析系统)
2:编写一段代码(客户端)实现浏览器请求Web服务器的过程
3:掌握格式化字符“\r”与“\n”和 “\r\n” 的作用
一:利用代码将网站域名解析为IP地址
代码方法:套接字 . connect((“网站域名”,80)) 在 connect()方法底层,会自动将填写的域名解析为IP地址,从而与网站服务器建立 TCP 连接
**
注意事项:
1:浏览器请求网站服务器的步骤:与网站服务器建立TCP连接→浏览器向服务器发送请求协议→网站服务器响应浏览器发送响应协议→关闭TCP连接
2:在 python 中编写TCP客户端的 connect()方法会自动网站域名解析为IP地址**,用来与网站服务端创建TCP连接
3:网站服务器的端口默认为 80
快速代码体验
二:python 编写代码模拟浏览器(客户端)请求百度服务器的流程
流程:导入socket模块→创建TCP套接字→利用connect()方法与百度网站的服务器创建TCP连接→客户端利用套接字的send()方法向服务端发起请求协议→百度服务器响应客户端的请求协议,客户端利用套接字的recv()方法接收服务器响应协议→利用字符串的切片将响应体从响应协议内分离出来→将响应体(有用文件)保存到文件内→关闭套接字
快速代码体验:
注意事项:
1:截取响应体的时候为什么要查找“\r\n\r\n”呢?因为响应协议中响应体和响应头中间相隔了“\r\n\r\n”,查找出“\r\n\r\n”位置截取字符串即可
2:查找“\r\n\r\n”的时候,原始数据必须是字符串,而不是二进制数据,也就是代码中的 ws_data.decode().find(“\r\n\r\n”),将ws_data二进制数据转为字符串
3:代码模拟浏览器客户端向服务器发送请求协议时,请求行的 HTTP 一定要大写!!!,否则会出现400错误
三:格式化字符“\r”与“\n”和”\r\n” 的作用
“\r”:不换行,将光标移动到本行行首
“\n”:换行,但是光标不移动到行首
“ \r\n”:相当于回车,换行并且光标移动至行首**