python的request库_python 的request库

其实在python中还有自带的urllib, urllib2, urllib3,而request是国外程序开发的第三方库,至于他们的关系嘛,urllib和urllib2是相互独立的关系,而request则使用了urllib3,其优点是多次请求重复使用一个socket,你想三次握手多麻烦,建立一个socket复用当然能提高效率不是。

当然了,使用这些的基础是对http协议要有一定的认识最好,没有的话只要你对发信收信的过程有一个概念就可以了。

所需:

pip install virtualenv(可选)

pip install request

pip install gunicorn

话不多说show you the code:

urllib2

其实在我的豆瓣爬虫中就使用过urllib2,有兴趣的可以移步瞅一眼

#coding=utf-8

import urllib2

import urllib

url = "http://httpbin.org/ip"

geturl = "http://httpbin.org/get"

def urllib2test():

response = urllib2.urlopen(url)

#响应头信息

print "====responseheaders===="

print response.info()

#响应体

print "====responsbody===="

print ''.join([item for item in response.readlines()])

def urllibget():

params = urllib.urlencode({'param1': 'hello','param2': 'world'})

response = urllib2.urlopen('?'.join([geturl, '%s'])%params)

#响应头信息

print "====responseheaders===="

print response.info()

#响应体

print "====responsbody===="

print ''.join([item for item in response.readlines()])

if __name__ == "__main__":

urllib2test()

urllibget()

这是一个简单的urllib2的使用,我们可以对其响应部分像读取文件一样操作

[item for item in response.readlines()]是序列推导式,相当于:

result = [];

for item in response.readlines():

result.append(item)

运行结果

c4f9e6d3f65b

图片发自简书App

在使用request时,就简单了:

#coding="utf-8

import requests

ipurl = "http://httpbin.org/ip"

geturl = "http://httpbin.org/get"

def printinfo(res):

print ">>>>headers"

print res.headers

print ">>>>code"

print res.status_code

print ">>>>boyd"

print res.text

print ">>>>jsondata"

print res.json()

response1 = requests.get(ipurl)

printinfo(response1)

params = {'param1':'hello','param2':'world'}

response2 = requests.get(geturl, params = params)

printinfo(response2)

*运行结果:

c4f9e6d3f65b

图片发自简书App

使用requests和github通信

#coding="utf-8"

import json

import requests

URL = 'https://api.github.com'

def build_uri(endpoint):

return '/'.join([URL,endpoint])

def better_print(json_str):

return json.dumps(json.loads(json_str), indent = 4)

def request_method():

response = requests.get(build_uri('users/hopevow'))

print better_print(response.text)

if __name__ == '__main__':

request_method()

运行结果

c4f9e6d3f65b

图片发自简书App

总结

带参数的请求

GET

request.get(url, params={'key1':'value1'}

POST

request.post(url, data = {'key1':'value1})

JSON参数提交

request.post(url, json={'key1':'value1'})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值