-
HTTP协议
协议是指计算机通信网络中两台计算机之间进行通讯所必须共同遵循的规定或规则,超文本传输协议(HTTP)是一种通讯协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。
目前我们使用的是HTTP/1.1版本。 -
URL(Uniform Resource Locator)地址用于描述一个网络上的资源
schema://host[:port#]/path/.../[?query-string][#anchor]
schema
指定低层使用的协议(例如,http,https,ftp)
host
HTTP服务器的IP地址或者域名
post#
HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如:http://www.cnblogs.com:8080/
path
访问资源的路径
query-string
发送给http服务器的数据
anchor-
锚
http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff
属性 | 内容 |
---|---|
schema | http |
host | www.mywebsite.com |
path | /sj/test/test.aspx |
query-string | name=sviergn&x=true |
anchor | stuff |
-
服务器和本地的交换机制
本-------(Request)------------>网
地-------(Response)---------->络
浏览器----------------------> 服务器 -
集中http请求方式(http1.1)
get
post
head
put
options
trace
delete
90%以上的网页都是用GET方式,request也是以GET为切入点。 -
requests包
requests是Python的一个http客户端库,向网页发送请求。
安装: 在win的cmd中,pip install requests
-
导入requests模块,几种请求方式
import requests
r = requests.get(url = '…')
r = requests.post(url = '…')
r = requests.put(url = '…')
r = requests.head(url = '…')
r = requests.delete(url = '…')
r = requests.options(url = '…')
- 获取网页状态码status code -> 显示网页返回状态
状态 | 含义 | 举例 |
---|---|---|
1xx | 临时响应 | |
2xx | 成功 | 200(成功)服务器已成功完成处理了请求。通常,这表示服务器提供了请求的网页。 |
3xx | 重定义 | 302(临时移动)服务器目前从不同位置的网页响应请求,类似跳转页面。 |
4xx | 请求错误 | 404(未找到)服务器找不到请求的网页。 |
5xx | 服务器错误 |
-
r.status_code
检查网页的状态码
import requests
par = {'wd':'学习使我快乐'}
u = 'https://www.baidu.com/s'
r = requests.get(url = u, params=par)
print(r.url) # https://www.baidu.com/s?wd=%E5%AD%A6%E4%B9%A0%E4%BD%BF%E6%88%91%E5%BF%AB%E4%B9%90
print(type(r)) # <class 'requests.models.Response'>
print(r.status_code) # 200
-
r.encoding
检查网页编码
import requests
par = {'wd':'学习使我快乐'}
u = 'https://www.baidu.com/s'
r = requests.get(url = u, params=par)
print(r.url) # https://www.baidu.com/s?wd=%E5%AD%A6%E4%B9%A0%E4%BD%BF%E6%88%91%E5%BF%AB%E4%B9%90
print(r.encoding) # ISO-8859-1
ISO-8859-1是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。
- 改变编码
import requests
par = {'wd':'学习使我快乐'}
u = 'https://www.baidu.com/s'
r = requests.get(url = u, params=par)
print(r.url) # https://www.baidu.com/s?wd=%E5%AD%A6%E4%B9%A0%E4%BD%BF%E6%88%91%E5%BF%AB%E4%B9%90
print(r.encoding) # ISO-8859-1
r.encoding = 'utf-8'
print(r.encoding) # utf-8
-
r.text()
获取网页内容
import requests
r = requests.get(url = 'https://bj.lianjia.com/ershoufang/101101910066.html')
print(r.text)
- 获取头域
HTTP头域是HTTP协议中请求(request)和响应(response)中的头部信息HTTP包括通用头,请求头,响应头和实体头四个部分。
import requests
r = requests.get(url='https://new.qq.com/omn/20180825/20180825A03QJ0.html')
print(r.headers)
-
timeout
设置超时时间,一旦超过这个时间还没有获取响应,就会提示错误
import requests
r = requests.get(url = 'https://www.baidu.com/',timeout = 0.1)
print('successful!')
网友评论