Http协议:
Http协议介绍:
- Http协议:全称是HyperText Transfer Protocol,中文意思是超文本传输协议,是一种发布和接收HTML(HyperText Markup Language)页面的方法。服务器端口号是80端口。 2. HTTPS协议:是HTTP协议的加密版本,在HTTP下加入了SSL层。服务器端口号是443端口。
常见的请求Method:
在Http协议中,定义了八种请求方法。这里介绍两种常用的请求方法,分别是get请求和post请求。
- get请求:一般情况下,只从服务器获取数据下来,并不会对服务器资源产生任何影响的时候会使用get请求。
- post请求:向服务器发送数据(登录)、上传文件等,会对服务器资源产生影响的时候会使用post请求。 以上是在网站开发中常用的两种方法。并且一般情况下都会遵循使用的原则。但是有的网站和服务器为了做反爬虫机制,也经常会不按常理出牌,有可能一个应该使用get方法的请求就一定要改成post请求,这个要视情况而定。
网络请求
1.urllib库 —python3内置
urlopen函数:
创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。
url:请求的url。
data:请求的data,如果设置了这个值,那么将变成post请求。
返回值:返回值是一个http.client.HTTPResponse对象,这个对象是一个类文件句柄对象。有read(size)、readline、readlines以及getcode等方法。
urlencode函数:编码
urlencode可以把字典数据转换为URL编码的数据。
from urllib import parse
data = {'name':'章三','age':21,'greet':'hello world'}
qs = parse.urlencode(data)
print(qs)
#name=%E8%80%81%E7%8E%8B&age=18&greet=hello+world
parse_qs函数:解码
print(parse.parse_qs(qs))
# {'name': ['章三'], 'age': ['21'], 'greet': ['hello world']}
request.Request类:网络请求 可以增加请求头
from urllib import request
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36' # user-agent可以在浏览器里直接拷贝
}
rq = request.Request('https://www.baidu.com/',headers=headers)
resp = request.urlopen(rq)
print(resp.read())