HTTP
HTTP: HyperText Transfer Protocol (超文本传输协议)
定义:Server 与 Client 之间用于传递数据的规范
Request 请求:
- Request Line 请求行
- 请求方法 (GET,POST)
- URL (www.baidu.com)
- 协议版本(HTTP/1.1)
- Request Headers 请求头
- User-Agent (Mozilla/5.0; Macintosh; Intel Mac OS X 10_15_7) 通过什么设备访问这个
- 网页2.Referer 防盗链(从那个网站引导过来)
- Cookie 缓存
- Request Data 请求数据
- Form Data (e.g. 注册登陆)
- JSON Data
Response 响应
- Response Line 响应行
- Response Code 响应码 (200 Success, 403 Fobidden, 404 Not Found)
- 协议版本(HTTP/1.1)
- Response Headers 响应头
- Content-Encoding 编码
- Content-Type 类型
- Server 服务器信息
- Date 日期
- Response Data 响应数据
- HTML, CSS, Javascript
- JPG,PNG,MP3,MP4
JSON,XML
requests 请求网页数据
requests官网:Requests: HTTP for Humans™ — Requests 2.31.0 documentation
requests中文版:Python requests 模块 | 菜鸟教程
安装requests 模块
pip install requests
导入requests模块
import requests
![哈哈哈,来自雷军的凝视](https://i-blog.csdnimg.cn/blog_migrate/adf93e70903eadd144ae454bd9b5fc56.png)
使用
import requests
url='https://www.csdn.net/'
res=requests.get(url) #get方法请求这个url
print(res.text) #响应体
print(res.status_code)#响应状态
print(res.encoding)#响应编码
print(res.headers) #响应头
#将响应体写入文件
with open('./8-16-01/index.html','w')as f:
f.write(res.text)
#将照片写入文件
url_img='https://live-file.csdnimg.cn/release/live/file/1690879046877.png?x-oss-process=image/resize,l_800'
res_img=requests.get(url_img)
with open('./8-16-01/img.png','wb') as f:#wb 二进制数据
f.write(res_img.content) #content 二进制数据
携带 Headers 模拟真人请求
一般也会加上Referer,表示请求当前资源的客户端来源
- 防盗链:
比如只允许某台服务器访问我自己的图片服务器资源,则可校验Http请求包中的Referer。判断是不是特定服务器的域名,若不是则拒接响应。 - 防止恶意请求:
对于某些风险较高的文件类型,可使用Referer使得该类型文件只能来自我所指定的网站。
![一般在request header 获取](https://i-blog.csdnimg.cn/blog_migrate/1210c0dd9ba9df46a2ca8fbaf4affbda.png)
设置 Proxy 代理IP突破IP封锁
当向一个地址大量的、持续的进行请求,服务器大概率会认为你是爬虫ip,就会被进行ip封锁,再像这个地址发送请求就拿不到数据了
- 可以搜索第三方的代理ip
- 可以进行购买或者使用免费的
- 连接SDK
就可以像url进行请求了,可能会比直接请求会慢一点,毕竟饶了一大圈 不带proxies=proxies就是自身原本的地址