Python爬虫小白入门(二)requests库
一、前言
为什么要先说 Requests 库呢,因为这是个功能很强大的网络请求库,可以实现跟浏览器一样发送各种 HTTP 请求来获取网站的数据。网络上的模块、库、包指的都是同一种东西,所以后文中可能会在不同地方使用不同称谓,不要迷惑哦。
结合一个实例来讲解吧。我的一个设计师小伙伴常去一些设计类网站收集素材,其中有个网站 Unsplash 里面美图特别多,所以想要把里面的图片都保存下来,这样咱们的小爬虫就登场了。说干就干,赶紧开始吧。
先来准备环境
二、运行环境
- 系统版本
我使用的是 Windows10。
好多小伙伴使用的是 Mac,配置上基本相同。由于我多年混迹于微软的开发平台,经常使用 Visual Studio、SQL Server 啥的,用 Windows 用习惯了(其实主要是因为 Qiong 穷!)。所以这个教程我就以 Windows 系统为例了。

-
Python 版本
我电脑装了好多个 Python 版本(学一个装一个。。。),不过推荐使用 Anaconda 这个科学计算版本,主要是因为它自带一个包管理工具,可以解决有些包安装错误的问题。去Anaconda 官网,选择 Python3.5 版本,然后下载安装。 -
IDE
我使用的是 PyCharm,是专门为 Python 开发的 IDE。这是 JetBrians 的产品,点我下载。
三、requests 库的安装
使用 Anaconda 版本的得小伙伴儿:用管理员权限运行 cmd 命令窗口,然后输入conda install requests
看动图:

直接使用 Python3.5 的小伙伴儿输入这个命令:pip install requests
如果你机器上存在多个 Python 版本,要给 Python3.5 的版本安装 requests 库,需要输入以下命令:py -3 -m pip install requests
好啦,requests 库安装完毕,接下来我们会在实际例子中演示它的使用。想要深入了解 requests 模块的小伙伴也可以仔细阅读英文官方文档,和中文官方文档,如果用到该文没有提到的功能,则查看文档即可。
四、开工
首先我们打开 PyCharm,需要选择一下它的页面主题。选择你喜欢的风格,以及选择使用的 Python 版本。然后打开一个你想要存放爬虫的目录,进入后长这样。

我们再创建一个 python 文件,输入第一行代码来导入 requests 库:import requests #导入requests库
然后用它来获取咱们的目标网页:
r = requests.get('https://unsplash.com') #像目标 url 地址发送 get 请求,返回一个 response 对象
print(r.text) #r.text 是 http response 的网页 HTML
在菜单栏点击“Run”,选择该文件(或者直接在窗口中点击右键,运行该文件):

执行完之后,底部会出现输出结果:

可以看到底部是获取到的网页内容。这就完成了爬虫的第一步,获取到了网页的 HTML 内容。
怎么样,很简单吧。
这只是用到了 requests 库的 get 请求,还有其他的请求使用也与之类似。下面我们简单介绍一下每个请求的用法。
五、requests 库的使用
因为有中文的官方文档,我就不介绍所有的功能了,只把常用到的说一下,大家用到更多功能的时候再去翻官方文档吧。
requests 库就是用来发送各种请求的,所以,我们就来看看各种请求怎么使用:
5.1 get 请求
r = requests.get("https://unsplash.com")
这就是我们刚刚用到的。其实就是向网站发送了一个 get 请求,然后网站会返回一个 response。r 就是 response。大家可以在运行的时候查看 r 的 type。
print(type(r))

get 请求还可以传递参数:
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)
上面代码向服务器发送的请求中包含了两个参数 key1 和 key2,以及两个参数的值。实际上它构造成了如下网址:http://httpbin.org/get?key1=value1&key2=value2
5.2 POST 请求
无参数的 post 请求:r = requests.post("http://httpbin.org/post")
有参数的 post 请求:
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)
post 请求多用来提交表单数据,即填写一堆输入框,然后提交。
5.3 其他请求
其他一些请求例如 put 请求、delete 请求、head 请求、option 请求等其实都是类似的。但是平时用的不多,就不仔细介绍了。有用到的可以去看官网文档哦。阅读官方文档是必备技能!
r = requests.put("http://httpbin.org/put")
r = requests.delete("http://httpbin.org/delete")
r = requests.head("http://httpbin.org/get")
r = requests.options("http://httpbin.org/get")
六、后语
我们刚才用 requests 库发送 http 请求获得了网页的 HTML 内容,那么应该如何从 HTML 中获得图片呢?
BeautifulSoup 库就此登场啦,赶快去看一下篇来了解它的用法吧。