requests模块
安装
- Linux
sudo pip3 install requests
- Windows
# 方法一
进入cmd命令行 :python -m pip install requests 这个就是用管理员权限运行
# 方法二
右键管理员进入cmd命令行 :pip install requests
常用方法
requests.get()
- 作用
# 向网站发起请求,并获取响应对象
res = requests.get(url,headers=headers)
- 参数
1、url :需要抓取的URL地址
2、headers : 请求头
3、timeout : 超时时间,超过时间会抛出异常
- 响应对象(res)属性
1、encoding :响应字符编码
res.encoding = 'utf-8'
2、text :字符串
3、content :字节流
4、status_code :HTTP响应码
5、url :实际数据的URL地址
import requests
url = 'http://www.baidu.com'
headers = {'User-Agent': 'xxx'}
res = requests.get(url, headers=headers)
# 查看响应的编码
res.encoding = 'utf-8'
html = res.text
print(html)
# 查看响应内容(bytes)
print(res.content) # 图片,视频等要用二进制方式获取
# 查看http响应码
print(res.status_code)
# 返回实际数据的url地址
print(res.url)
- 非结构化数据保存
with open('xxx.jpg','wb') as f:
f.write(res.content)
示例
保存图片到本地
import requests
url='http://hbimg.b0.upaiyun.com/ac0a5f64360b9c55a6ea4ba395203543d48a8e401bcf7-6q2JJL_fw658'
headers = {'User-Agent':'Mozilla/5.0'}
# 获取响应内容bytes
html = requests.get(url,headers=headers).content
# 写文件
with open('颖宝.jpg','wb') as f:
f.write(html)
Web客户端验证 参数-auth
- 作用及类型
1、针对于需要web客户端用户名密码认证的网站
2、auth = ('username','password')
案例
import requests
import re
class NoteSpider(object):
def __init__(self):
# 需要输入密码登录的网站
self.url = 'http://******.com.cn/'
self.headers = {'User-Agent':'Mozilla/5.0'}
self.auth = ('username','password')
# 获取+解析
def get_parse_page(self):
res = requests.get(
url=self.url,
auth=self.auth,
headers=self.headers
)
res.encoding = 'utf-8'
html = res.text
# 解析
p = re.compile('<a href=.*?>(.*?)/</a>',re.S)
r_list = p.findall(html)
# r_list : ['..','AIDCode','ACCCode']
for r in r_list:
if r != '..':
print({ '课程方向' : r })
if __name__ == '__main__':
spider = NoteSpider()
spider.get_parse_page()
SSL证书认证参数-verify
- 适用网站及场景
1、适用网站: https类型网站但是没有经过 证书认证机构 认证的网站
2、适用场景: 抛出 SSLError 异常则考虑使用此参数
-
参数类型
1、verify=True(默认) : 检查证书认证 2、verify=False(常用): 忽略证书认证 # 示例 response = requests.get( url=url, params=params, headers=headers, verify=False )
代理参数-proxies
- 定义
1、定义: 代替你原来的IP地址去对接网络的IP地址。
2、作用: 隐藏自身真实IP,避免被封。
高匿:服务器只能看到代理IP
透明:服务器能看到代理IP,同时也能看到本机IP
- 普通代理
获取代理IP网站
西刺代理、快代理、全网代理、代理精灵、... ...
参数类型
1、语法结构
proxies = {
'协议':'协议://IP:端口号'
}
2、示例
proxies = {
'http':'http://IP:端口号',
'https':'https://IP:端口号'
}
# requests.get(url, proxies=proxies, headers=headers)
示例
-
使用免费普通代理IP访问测试网站: http://httpbin.org/get
import requests url = 'http://httpbin.org/get' headers = { 'User-Agent':'Mozilla/5.0' } # 定义代理,在代理IP网站中查找免费代理IP proxies = { 'http':'http://115.171.85.221:9000', 'https':'https://115.171.85.221:9000' } html = requests.get(url,proxies=proxies,headers=headers,timeout=5).text print(html)
如何建立一个自己的代理IP池,见这篇文章:https://blog.csdn.net/weixin_44706011/article/details/103549624
requests.get模块参数总结
1.url "" url
2.headers {} User-Agent
3.params {} url后面的关键字
4.proxies {} 代理ip
5.auth () 用户名密码
6.timeout 超时时间
7.verify True/False SSL
requests.post()
- 适用场景a
Post类型请求的网站
- 参数-data
response = requests.post(url,data=data,headers=headers)
# data :post数据(Form表单数据-字典格式)
- 请求方式的特点
# 一般
GET请求 : 参数在URL地址中有显示
POST请求: Form表单提交数据