今日内容:

一、HTTP协议

1.HTTP协议简介

  • 参考博客:https://www.cnblogs.com/clschao/articles/9230431.html

  • 是超文本传输协议

    • 现在使用最广泛的版本是 -- HTTP 1.1
  • 客户端发起一个http协议请求到服务端指定的端口

    • 服务端默认端口为80(浏览器上面不用填写)
    • 任何协议都可以作为传输协议
  • http协议概述:HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)

  • http的请求响应

    1. 客户端链接到web服务器

    2. 发送http请求

      ​ 通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

2.请求方式

  • get请求

    • 格式 GET / HTTP/1.1/r/n/r/n
    • 请求的数据拼接在url后面
  • user-Agent:...
    • xx:xx #(这里放键值对)
  • post请求方法
    • post请求后面没有数据,会把数据放到请求数据里面(最后)

3.响应格式

HTTP/1.1 200 ok
kl:v1
k2:v2

4.响应数据

传送协议。

层级URL标记符号(为[//],固定不变)

服务器 (通常为域名,有时为IP地址)
端口号 (以数字方式表示,若为HTTP的默认值“:80”可省略)
路径 (以“/”字符区别路径中的每一个目录名称) /clschao/articles/9230431.html
查询 (GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题)
https://www.cnblogs.com/clschao/articles/9230431.html?name=chao&age=18

5.请求方法

get post
GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.(请求头里面那个content-type做的这种参数形式,后面讲)
POST方法是把提交的数据放在HTTP包的请求数据部分中. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST没有限制.
GET与POST请求在服务端获取请求数据方式不同 常用的get请求方式:
浏览器输入网址
a标签
form标签 method='get' post请求方法,一般都用来提交数据.比如用户名密码登录
##其他方法:HEAD PUT DELETE TRACE OPTIONS CONNECT PATCH

6.状态码

//响应状态码
1xx消息——请求已被服务器接收,继续处理
2xx成功——请求已成功被服务器接收、理解、并接受
3xx重定向——需要后续操作才能完成这一请求
4xx请求错误——请求含有词法错误或者无法被执行
5xx服务器错误——服务器在处理某个正确请求时发生错误

7.http协议特点

	1.基于  请求-响应 的模式
2.无状态保存(不记录信息)
3.无连接
还有一种等待几秒,可能会继续链接,来提升效率 请求:request
响应:response

二、web框架

web框架本质

  1. 本质:浏览器发送请求,服务器接受并返回数据
  2. 框架:就是别人写好的,提供给我们使用

简单的socket服务器

import socket
server = socket.socket()
ip_port = ('127.0.0.1',8001)
server.bind(ip_port)
server.listen()
while 1:
conn,addr = server.accept()
from_client_msg = conn.recv(1024)
# print(from_client_msg.decode('utf-8'))
print(from_client_msg)
conn.send(b'HTTP/1.1 200 ok\r\nk1:v1\r\n\r\n')
##http协议响应格式
# conn.send(b'hello girl')
with open('03 简单版web框架.html','rb') as f:
data = f.read()
conn.send(data)
conn.close()

爬虫小案例

  • 利用'User-Agent'模拟浏览器,破解反扒机制(小案例)
import requests
# res = requests.get('https://www.jd.com/2019')
res = requests.get('https://dig.chouti.com/',headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
})
# print(res.content)
with open('ct.html','w',encoding='utf-8') as f:
f.write(res.text)

Django 第一天 开端的更多相关文章

  1. python django第一天

    django第一天,上一次是使用了virtualenv(沙盒),这一次就直接用virtualenv直接建一个django的环境,用来自己练着试试django: source django/Script ...

  2. 笔记-django第一个项目

    笔记-django第一个项目 1.      创建项目 安装 Django 之后,现在有了可用的管理工具 django-admin.可以使用 django-admin 来创建一个项目: 看下djang ...

  3. 小白学习django第一站-环境配置

    Django简单来说就是用Python开发的一个免费开源的Web框架 使用Django,使你能够以最小的代价构建和维护高质量的Web应用. 开搞!!! 工具准备: linux(ubuntu) + py ...

  4. day50 django第一天 自定义框架

    主要内容: 1.http协议 2.web框架 3.Django 1.http协议 1.1 http协议的简介 超文本传输协议(英文:Hyper Text Transfer Protocol,HTTP) ...

  5. day 60 Django第一天

    jinjia2 : Jinja2是基于python的模板引擎,功能比较类似于于PHP的smarty,J2ee的Freemarker和velocity. 它能完全支持unicode,并具有集成的沙箱执行 ...

  6. django第一课 简单的网页视图

    注意本人django版本2.0      python3.6 第一步:创建自己的django项目 django-admin.py startproject ** 第二步:进入**创建app pytho ...

  7. Django第一步

    对于一个web框架,掌握了三部分的内容,就可以说是迈出了第一步. 1. 准备开发环境 2. 创建一个工程,并运行 3. 开发hello world应用 1. 准备环境 首先应该是安装python和dj ...

  8. django 第一个项目测试

    我们安装好Django以后就可以使用Django命令来创建项目了 1.Django 创建第一个项目 安装 Django 之后,您现在应该已经有了可用的管理工具 django-admin.py.我们可以 ...

  9. 30天的php学习之路——第一天开端

    因项目紧急只留给了我4周时间学习php.谨以此文记录我的php学习历程,仅供参考,若有错误请指正. 之前对php有过一些了解,一些语法和习惯和C#差距有些大,所以第一天准备对php中的符号有个全面的了 ...

随机推荐

  1. jquery easyui datagrid 在翻页以后仍能记录被选中的行及刷新设置选中行数据

    //easyUI的datagrid在复选框多选时,如何在翻页以后仍能记录被选中的行://注意datagrid中需要配置idField属性,一般为数据的主键 $.ajax({ type: 'GET', ...

  2. 【SP1716】GSS3 - Can you answer these queries III(动态DP)

    题目链接 之前用线段树写了一遍,现在用\(ddp\)再写一遍. #include <cstdio> #define lc (now << 1) #define rc (now ...

  3. jquery实现输入框实时统计字数和设置字数限制功能

    <html> <header> <meta charset="utf-8"> <title>测试实时字数显示</title&g ...

  4. Java 之 web 相关概念

    一.软件架构 1.C/S:客户端/服务器端 2.B/S:浏览器/服务器端(目前常用) 二.网络资源 1.静态资源 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源,静态资源可以直接被浏览器 ...

  5. 【亲测可行,图片宽度高度自适应】c# Graphics MeasureString精确测量字体宽度

    , , ) { int count = number.Length; //需要配置的字段 //Font f = new Font("Microsoft Sans Serif", f ...

  6. Mac 下 安装Python3

    因为Mac系统自带Python2.7 所以我们开发要重新装Python3 直接运行下面就好 luohaotiandeMacBook-Pro:~ luohaotian$ which python /us ...

  7. simpleDateFormat中格式化时间需要注意的问题

    student.getDateProperty("business","birth","yyyy-MM-dd",null)测试时  时间格式 ...

  8. USB之基本协议和数据波形1

    =============  本系列参考  ============= <圈圈教你玩USB>.<Linux那些事儿之我是USB> 协议文档:https://www.usb.or ...

  9. C++中string::find()函数和string::npos函数的使用

    1. string::find()函数和string::npos函数的介绍 我们在学习C++的时候必不可少的使用到string类中的find()函数,它是一个查找函数,功能还是很强大的,但是此处我们不 ...

  10. yum源仓库的三种搭建方式

    yum源的三种搭建方式 一.  本地yum仓库的搭建 1.1.获取软件包资源 将iso镜像挂载在本地目录中,此次挂载目录为/var/www/html/repo/,此目录本身不存在,需要创建.软件宝资源 ...