HTTP请求还有很多类型,比如POST,PUT,DELETE,HEAD,OPTIONS。也都可以用同样的方式实现:
r=requests.post("http://www.org/post")
r=requests.put("http://www.org/put")
r=requests.delete("http://www.org/delete")
r=requests.head("http://httpbin.org/get")
r=requests.options("http://www.org/get")
在URLs中传递参数
有时候我们需要在URL中传递参数,比如在采集百度搜索结果时,我们wd参数(搜索词)和rn参数(搜素结果数量),你可以手工组成URL,或者使用:
r=requests.get(“http://www.baidu.com/”,params={“wd”:”test”})。
获取响应内容
可以通过r.text来获取网页的内容。
r=requests.get('https://www.zhidaow.com')>>>r.textu'\n
文档里说,requests会自动将内容转码。大多数unicode字体都会无缝转码。但我在cygwin下使用时老是出现UnicodeEncodeError错误,郁闷。倒是在python的IDLE中完全正常。
另外,还可以通过r.content来获取页面内容。
>>>r=requests.get('https://www.zhidaow.com')>>>r.contentb'\n
文档中说r.content是以字节的方式去显示,所以在IDLE中以b开头。但我在cygwin中用起来并没有,下载网页正好。所以就替代了urllib2的urllib2.urlopen(url).read()功能。(基本上是我用的最多的一个功能。)
获取网页编码
可以使用r.encoding来获取网页编码。
r=requests.get('http://www.baidu.com')>>>r.encoding'utf-8'
当你发送请求时,requests会根据HTTP头部来猜测网页编码,当你使用r.text时,requests就会使用这个编码。当然你还可以修改requests的编码形式。
r=requests.get('http://www.zhidaow.com')>>>r.encoding'utf-8'
r.encoding='ISO-8859-1'
像上面的例子,对encoding修改后就直接会用修改后的编码去获取网页内容。
json
像urllib和urllib2,如果用到json,就要引入新模块,如json和simplejson,但在requests中已经有了内置的函数,r.json()。就拿查询IP的API来说:
>>>r=requests.get('http://www.taobao.com/service/getIpInfo.php?ip=122.88.60.28')>>>r.json()['data']['country']'中国'
响应头内容
可以通过r.headers来获取响应头内容。
r=requests.get('http://www.tester.com')
r.headers{'content-encoding':'gzip','transfer-encoding':'chunked','content-type':'text/html;charset=utf-8';...}
可以看到是以字典的形式返回了全部内容,我们也可以访问部分内容。
r.headers['Content-Type']'text/html;charset=utf8'
r.headers.get('content-type')'text/html;charset=utf-8'
最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】
全套资料获取方式:点击下方小卡片自行领取即可