关于requests模块
之前在跟大家讲通过字典列表批量获取数据的时候用过这个模块
安装过程就不再讲解了
requests模块是python的http库,可以完成绝大部分与http应用相关的工作,所以我们可以用它来进行数据抓取工作
requests模块有两个常用的方法,get 和 post 我们也主要只是围绕这两个方法来讲解requests模块
注意:requests不能模拟浏览器的全部行为
get方法
在requests模块中,我们可以通过get和post两种形式去向服务器发出http请求
例如,还是用我自己的网站做例子,来简单演示这个方法
# coding=utf-8
__Author__ = "susmote"
import requests
url = "http://www.susmote.com"
resp = requests.get(url)
with open("home.html", 'w', encoding='utf8') as f:
f.write(resp.text)
在命令行运行
我们得到了一个文件,也就是我的网站的首页的源码
我们通过浏览器打开,如下
resp还有一些其他的属性,你可通过help(resp)查看response的各种属性和方法
返回如下图
我们试一下里面的一些属性
编码问题
在这里要特别注意一下编码的问题
通过resp.encoding 可以返回默认编码,resp.text就是按照这个进行编码的
但如果将编码改为gb2312,就会出现乱码
response具有content属性,会以二进制的方式返回响应的内容,返回内容如下图所示
response还有json方法,可以将返回的文本内容以json的方式进行解析
http://jsonip.com 这个网站在接受get请求后,作为响应会向请求方法返回一个json格式的文本,里面会有发起请求的ip地址等信息
例如下面这个例子
# coding=utf-8
__Author__ = "susmote"
import requests
url = "http://jsonip.com/"
resp_ip = requests.get(url)
print("字符串格式")
print(resp_ip.text)
print(type(resp_ip))
print("字典格式")
print(resp_ip.json())
print(type(resp_ip))
print(resp_ip.text)
下面我们在命令行运行这个文件
在这个例子中,resp_ip的text包含了返回的文本信息,json格式的信息也是以文本的方式返回的,这个可以从返回结果中看出
resp_ip.json()是使用json方法对返回的内容进行解析,将json解析的结果以字典的形式返回,但要注意的是json方法只是解析,并不会对resp.text造成影响,也就是之前的resp.text的内容是不变的
关与get方法大概就是这些,还有一些后面再讲
官方博客 www.susmote.com