Requests 模块
首先一个简单的requests请求例子(直接复制到PyCharm运行即可):
import requests
url = "https://www.baidu.com"
# 将爬虫程序伪装成浏览器,从而获得更完整的响应数据
headers = {
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36"
}
# 定义响应
response = requests.get(url, headers = headers)
# 打印网页源码的str类型数据
print(response.text)
如果以上例子中requests 标红, 请向下看文章内容
1. requests模块介绍
-
作用
发送http请求,获取响应数据
-
安装(requests模块非自带模块,需进行下载安装)
在桌面打开win+r 输入cmd
在黑框中输入(等待下载安装结束):
pip install requests -
发送get请求
- 导入
- 调用get方法,对目标url发送请求
2. response 响应对象的text和content之间的区别
response.text 和 response.content 的区别
-
respons.text ( == response.content.decode)
- 类型: str
- 解码类型: requests模块自动根据HTTP头部对响应的编码作出有根据的推测,推测文本编码
-
response.content
- 类型: bytes
- 解码类型: 没有指定
解决中文乱码问题:
-
response.content.decode( ) 默认utf-8
-
response.content.decode(“GBK”)
-
常见的编码字符集:
- utf-8
- gbk
- gb2313
- ascii
- iso-8859-1
手动设定编码格式:
respons.encoding = "utf-8"
print(text)
等价于
print(response.content.decode())
3. 常用响应对象的其他常用的属性或方法
- response.url 响应的url : 有时候响应的url和请求的url不一致
- response.status_code : 响应状态码
- response.requests.headers : 响应对应的请求头
- response.headers : 响应头
- response.request._cookies : 响应对应请求的cookie ; 返回cookieJar类型
- response.json : 自动将json字符串类型的响应内容转换为python对象(dict / list)
4. 发送 带header的请求
可以得到更详细的响应(让服务器以为是浏览器在操作)
import requests
url = "www.baidu.com"
headers = {
#内容为json形式
'User_Agent' : '',
'Cookie' : ''
}
response = requests.get(url, headers = headers)
print(response.content.decode())
# 获取响应数据量
print(len(response.content.decode()))
- 使用浏览器抓包
- 获取基础请求头“user_agent”
5. 发送带参数的请求
1. url中带参数
https://www.baidu.com/s?wd=python
2. 使用params参数
2.发送请求的时候设置参数字典(将params添加至get方法中)
# 添加的参数格式
params = {
# json 格式
" " : " ",
" " : " "
}
实例:
import requests
url = 'https://www.baidu.com/s?'
# 添加请求头
headers = { #内容为json形式
'User-Agent': ''
}
#构架参数字典
params = {
'wd' : 'python'
}
# 将参数字典添加至get方法中
response = requests.get(url, headers = headers, params = params)
#返回相应网页地址
print(response.url)
6. 在headers参数中携带Cookie
用来做状态的保持
方法同ua
使用cookie参数保持会话
- 构建cookies字典
- 在请求的时候将cookie字典赋值给cookies参数
cookies = {
’ ’ : ’ ’
}
两种使用cookie的形式:
import requests
url = "https://home.jd.com/"
headers = {
"User-Agent": "",
"cookie": ""
}
response = requests.get(url, headers=headers)
print(response.text)
import requests
url = "https://home.jd.com/"
headers = {
"User-Agent": ""
}
cookie = {
"cookie": ""
}
response = requests.get(url, headers=headers, cookies=cookie)
print(response.text)
7. 超时参数(timeout)
import requests
url = 'https://google.com'
# 添加一个timeout参数,当等待2秒还没响应时,自动停止
response = requests.get(url, timeout=2)
8. 使用代理IP (proxies)
分类:
- 根据知不知道最终服务器的地址:(正向代理、 反向代理)
- 匿名度: (透明代理、 匿名代理、 高匿代理)
- 根据使用的协议: (http、 https、 socks隧道代理)
使用:
proxies = {
# json格式
"http" : "http://·····"
#或
"https" : "https://·····"
}
response = requests.get(url, proxies=proxies)
9. 使用verify参数忽略CA证书
response = requests.get(url, verify=False)