首先需要先安装requests第三方库,安装方法有两种,一种是打开macbook的终端输入响应的指令进行安装,另一种是在pycharm中的终端命令行中输入相应的命令进行安装。两种方法使用的命令是一致的:
pip install requests
如果安装不成功,可能需要使用pip3命令进行安装
pip3 install requests
安装失败一种原因可能需要更新一下pip安装工具,更新的命令行是
pip install --upgrade pip
的另一种原因可能是网络不好,因为pip默认使用国外的镜像源安装,这里我们可以指定国内的镜像源进行安装
pip install requests -i 国内的镜像源(地址参考前几篇笔记或者上网直接搜索国内镜像源即可)
案例1:抓取百度网页的信息(通过requests中的get方法发送请求)
import requests
url ='http://www.baidu.com/cn'
res = requests.get(url=url)
print(res.text)
输出的结果如下:
<html>
<head>
<script>
location.replace(location.href.replace("https://","http://"));
</script>
</head>
<body>
<noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript>
</body>
</html>
发现只能抓取很少的信息
案例2:增加请求头抓取百度网页的信息
import requests
url ='https://www.baidu.com/'
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36'
}
res = requests.get(url=url,headers=headers)
print(res.text)
运行上述代码,可以发现抓取了很多信息,我们在屏幕上浏览这些打印信息的时候会发现一些类似于乱码的形式,这是因为text方法输出的内容是自动根据HTTP头部对应的响应编码作出的推测解码,有可能解析错误。
这里我们更推荐使用content方法进行输出,使用方法如下代码:
import requests
url ='https://www.baidu.com/'
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36'
}
res = requests.get(url=url,headers=headers)
# print(res.text)
print(res.content.decode())
通过案例1和案例2,我们总结一下响应内容的获取方式:
(1)res.text,输出类型是str,解码方式根据HTTP头部信息进行推测
(2)res.content,输出类型是bytes,解码类型没有指定,默认是使用utf-8
总结:三种能够100%解决网页解码的方法
(1)res.content.decode()
(2)res.content.decode('GBK')
(3)res.text
最后再来说一线res的其他属性,
res.status_codes:获取HTTP的响应状态
res.headers:获取响应头
res.cookies:获取cookis(经过set-cookis动作之后的)
res.requests.cookies:响应对应请求的cookie