它可以相当于浏览器发送get请求,也可以模拟浏览器发送post请求,服务器响应的页面和cookie值它都可以获取.
基本理念:
- 发起请求:通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。
- 获取响应内容:如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能有HTML,Json字符串,二进制数据(如图片视频)等类型。
res = requests.get(URL)
3.解析内容:得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析。可能是 Json,可以直接转为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。
res.encoding = 'utf-8'
res.text
4.保存数据:保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式的文件。
file = open('文本.txt', 'a+')
file.write(res.text)
引入模块
import requests
发送get请求:
headers= {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'} #头部标识UA
URL = 'http://www.baidu.com'
res = requests.get(URL,headers=headers) #获取后有一个返回对象
res.encoding = 'utf-8' #设置获取的数据编码方式
print(res.text) #将获取的对象里面的数据以文本方式打印出来。
保存:
file = open('文本.txt', 'a+') #打开或者新建一个txt文件
图片的话,就是jpg文件,wb格式写入
file.write(res.text) #把获取的内容写进去保存
file.close() #关闭
+ 打开一个文件进行更新(可读可写)。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
requests模块的属性:
response.content 获取二进制类型数据
response.url #获取请求的url
response.text #返回response对象响应体的文本内容
response.encoding='utf8' #设置response对象响应体的编码格式,作用于requests.text
response.json() #将返回的json数据直接转成dict
response.cookies #返回响应对象中的所有cookie对象
req = requests.session() #返回一个requests对象,使用该对象可以对请求进行状态保持。
#发送get请求,参数:url,headers,params,proxies,timeout,verify等,返回一个response对象。 requests.get()
#发送post请求,参数:url,headers,data,proxies,timeout,verify等,返回一个response对象。 requests.post()