HTTP和HTTPS 的作用和应用场景 (python 爬虫简单入门)

HTTP和HTTPS

HTTP

HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法。

  • HTTP的端口号为80

HTTPS

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层。

SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全。

  • HTTPS的端口号为443

请求与响应

HTTP通信由两部分组成: 客户端请求消息服务器响应消息

浏览器发送HTTP请求的过程:

  1. 当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为"Get"和"Post"两种方法。

  2. 当我们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。

  3. 浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。

  4. 当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了

URL

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

基本格式:scheme://host[:port#]/path/.../[?query-string][#anchor]

  • scheme:协议(例如:http, https, ftp)

  • host:服务器的IP地址或者域名

  • port#:服务器的端口(如果是走协议默认端口,缺省端口80)

  • path:访问资源的路径

  • query-string:参数,发送给http服务器的数据

  • anchor:锚(跳转到网页的指定锚点位置)

  • http://item.jd.com/11936238.html#product-detail

请求方法

|--------|--------|------------------------------------------------------------------------|
| 序号 | 方法 | 描述 |
| 1 | GET | 请求指定的页面信息,并返回实体主体。 |
| 2 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 |
| 3 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
| 4 | DELETE | 请求服务器删除指定的页面。 |
| ... | ... | ... |

HTTP请求主要分为GetPost两种方法

  • GET是从服务器上获取数据,POST是向服务器传送数据

  • GET请求参数显示,都显示在浏览器网址上,HTTP服务器根据该请求所包含URL中的参数来产生响应内容,即"Get"请求的参数是URL的一部分。 例如: http://www.baidu.com/s?wd=Chinese

  • POST请求参数在请求体当中,消息长度没有限制而且以隐式的方式进行发送,通常用来向HTTP服务器提交量比较大的数据(比如请求中包含许多参数或者文件上传操作等),请求的参数包含在"Content-Type"消息头里,指明该消息体的媒体类型和编码,

注意:避免使用Get方式提交表单,因为有可能会导致安全问题。 比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。

响应状态码

响应状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

常见状态码:

**100~199:**表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程。

200~299:表示服务器成功接收请求并已完成整个处理过程。常用200(OK 请求成功)。

300~399:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、常用302(所请求的页面已经临时转移至新的url)、307和304(使用缓存资源)。

400~499:客户端的请求有错误,常用404(服务器无法找到被请求的页面)、403(服务器拒绝访问,权限不够)。

500~599:服务器端出现错误,常用500(请求未完成。服务器遇到不可预知的情况)。

robots协议

https://www.baidu.com/robots.txt

requests的使用

安装方式

python 复制代码
pip install requests

简单入门

# 导入requests模块 import requests # 发起get请求 response = requests.get("https://www.baidu.com/") # 设置字符集 response.encoding ="utf-8" # print(response.apparent_encoding) # 推测更加准确的编码格式 response.encoding = response.apparent_encoding print(response.text)

GET请求

import requests headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"} # params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode() response = requests.get("http://www.baidu.com",headers=headers) ressponse.encoding = "utf-8" # 查看响应头部字符编码 print(response.apparent_encoding) # 查看响应内容,response.text 返回的是Unicode格式的数据 response.encoding = response.apparent_encoding print(response.text) # 查看响应内容,response.content返回的字节流数据 print(response.content) # 查看完整url地址 print(response.url) # 查看响应码 print (response.status_code)

相关推荐
jasmine s5 分钟前
Pandas
开发语言·python
郭wes代码5 分钟前
Cmd命令大全(万字详细版)
python·算法·小程序
leaf_leaves_leaf22 分钟前
win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本
人工智能·pytorch·python
夜雨飘零127 分钟前
基于Pytorch实现的说话人日志(说话人分离)
人工智能·pytorch·python·声纹识别·说话人分离·说话人日志
404NooFound34 分钟前
Python轻量级NoSQL数据库TinyDB
开发语言·python·nosql
天天要nx1 小时前
D102【python 接口自动化学习】- pytest进阶之fixture用法
python·pytest
minstbe1 小时前
AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python
人工智能·python·支持向量机
njnu@liyong1 小时前
图解HTTP-HTTP报文
网络协议·计算机网络·http
落魄实习生1 小时前
AI应用-本地模型实现AI生成PPT(简易版)
python·ai·vue·ppt
苏言の狗1 小时前
Pytorch中关于Tensor的操作
人工智能·pytorch·python·深度学习·机器学习