目录
requests库的使用
requests库的安装
requests的简单使用
添加请求头和参数
处理POST请求
代理IP
获取响应的cookie
session实现登录
requests库的安装
由于requests模块属于第三方模块,所以需要下载安装
下载安装很简单,打开DOS窗口
输入如下命令:
pip install requests
即可下载requests模块了
同时,如果要卸载模块,可以命令:
pip uninstall requests
效果图显示:
requests的简单使用
import requests
# 和urllib模块功能类似,requests更加方便、轻量化
# requests模块是第三方模块,需要下载安装
# 打开DOS窗口,输入安装命令是pip install requests
# 卸载命令是:pip uninstall requests
# 引入requests模块的代码如下:import requests
# 发送请求,获取响应
response = requests.get("http://www.baidu.com").content.decode() # .text是以字符串的形式获取响应内容;.content是以二进制的形式获取响应内容;.decode()是转换中文
# 也可以使用这种方式获取
# response=requests.request("get","http://www.baidu.com").content.decode()
# 打印
print(response)
打印如下:
添加请求头和参数
import requests
# 添加请求头和参数
# 请求头
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"
}
# 参数
wd = {"wd": "参数"}
# 发送请求,获取响应
response = requests.get("http://www.baidu.com/s?", params=wd, headers=headers) # 会自动创建请求,并且对中文编码进行转换
data1 = response.text # 返回一个字符串形式的数据
data2 = response.content # 返回一个二进制形式的数据
data3 = response.content.decode() # 返回一个字符串形式的数据,将二进制数据转换成字符串形式
# 可分别打印data1、data2、data3查看三者之间的区别
print(data3)
打印如下:
处理POST请求
以有道翻译为例
import requests
# 处理POST请求
# 请求头
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"
}
# 原URL:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
key = "学习"
# 发送POST必须构造Form Data
form_data = {
"i": key,
"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"salt": "15749948169760",
"sign": "287760012f276620e8eaed1e00aff339",
"ts": "1574994816976",
"bv": "319767f82622c78aa4241bb7a80c5077",
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action": "FY_BY_REALTlME"
}
# 发送请求,获取响应
response = requests.post(url, headers=headers, data=form_data)
# 打印获取的JSON格式的字符串
print(response.json()) # 可以通过.json()获取JSON格式的数据
# 打印处理后的结果
print(response.json()["translateResult"][0][0]["tgt"])
打印如下:
代理IP
import requests # 导入requests模块
# 代理IP
# 这里使用的代理IP网站:http://www.66ip.cn/
# 设置代理IP地址
# http表示要处理HTTP请求;https表示要处理HTTPS请求
# 语法:{"http":"http://代理IP地址:端口号"}
# 可以使用多个代理IP
proxy = {
"http": "http://139.5.71.94:23500",
"http": "http://201.220.16.103:8080",
"https": "https://139.5.71.94:23500"
}
# 发送请求,获取响应
response = requests.get("http://www.baidu.com", proxies=proxy) # proxies必须是这个参数
# 打印
print(response.content.decode())
打印如下:
获取响应的cookie
import requests # 导入requests模块
# 获取响应的cookie
# 第一步:获取返回的cookiejar对象,其包含cookie信息
# 第二步:将cookiejar转换成字典
# 发送请求,获取请求
response=requests.get("http://www.baidu.com")
# 获取返回的cookiejar对象
cookie_jar=response.cookies
# 将cookiejar转换成字典
cookie_dict=requests.utils.dict_from_cookiejar(cookie_jar)
# 打印cookie_dict
print(cookie_dict)
打印如下:
session实现登录
import requests # 导入requests模块
# session实现登陆
# 创建session对象
ses = requests.session()
# 构建登陆需要的参数,键是根据需要登陆的表单来写的
data = {"userName": "******", "password": "******"}
# 通过传递用户名和密码得到cookie信息
ses.post("http://www.renren.com/PLogin.do", data=data)
# 请求需要的页面
response = ses.get("http://www.renren.com/880151247/profile")
# 打印
print(response.content.decode())