Python的第三方requests库是基于urllib编写的,但是比urllib库强大,非常适合爬虫的编写,可以帮我们节省很多工作。在Python爬虫从入门到精通(1): 爬虫原理, urllib库介绍及5个适合新手练手的爬虫我们已经介绍了urllib库用法的用法,比如当我们需要向一个url发送get参数或post数据时,我们先要对参数或数据进行urlencode编码,再用urllib.request.Request方法构建一个request_url对象加入参数和数据,最后使用request.urlopen方法打开构建好的request_url。这个操作requests库用一行代码就可以实现了。在打开一个url的时候,就能发送get参数或post数据。同时requests库还简化了对cookie的操作,比如请求头里带上cookie或者维持网站会话都非常方便。事实上自从用上了requests库,我已经不怎么用urllib库了。今天小编我就来详细介绍下requests库的基本用法和如何操作cookie,并用几个具体实例演示下如何利用requests库开发爬虫。
requests库的安装及第一个requests爬虫
安装requests库只需要在终端中输入pip install requests。为了确保requests库已经成功安装,你可以用它写个非常简单的爬虫,爬取百度的首页(见下面代码)。如果返回的response的状态码status_code是200,那么你的requests库就安装成功了。你还可以选择打印response.text或response.content查看reponse的具体内容。
>>> import requests
>>> response = requests.get("https://www.baidu.com")
>>> print(response.status_code)
200
>>> print(response.text)
>>> print(response.content)
response.text和response.content的区别在于:
-
response.text是解过码的字符串(比如html代码)。当requests发送请求到一个网页时,requests库会推测目标网页的编码,并对其解码,转为字符串(str)。这种方法比较容易出现乱码。
-
response.content是未解码的二进制格式(bytes),不仅支持文本内容,还适用于二进制文件内容如图片和音乐等。如果需要把文本内容转化为字符串,一般使用response.content.decode('utf-8')方法即可。
requests库支持的请求方法
requests库支持多种HTTP请求方法,然而最常用的只有get和post方法。小编我其它方法也基本不用。
import requests
requests.get("http://xxxx.com/")
requests.post("http://xxxx.com/post", data = {'key':'value'})
requests.put("http://xxxx.com/put", data = {'key':'value'})
requests.delete("http://xxxx.com/delete")
requests.head("http://xxxx.com/get")
requests.options("http://xxxx.com/get")