requests库的使用

import requests -> 引用模块

1. 发送请求与传递参数

带参数请求:


#GET参数实例
requests.get('http://www.dict.baidu.com/s', params={'wd': 'python'})  
#或
url = 'http://www.baidu.com'
payload = {'key1': 'value1', 'key2': 'value2'}
headers = { "Accept":"text/html,application/xhtml+xml,application/xml;",
            "Accept-Encoding":"gzip",
            "Accept-Language":"zh-CN,zh;q=0.8",
            "Referer":"http://www.example.com/",
            "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
            }  
res1 = requests.get(url, params=payload, headers=headers, timeout=1)

#POST参数实例
requests.post('http://www.itwhy.org/wp-comments-post.php', data={'comment': '测试post'})
files = {'file': open('touxiang.png', 'rb')} #用于发送文件的post属性
files = {'file': ('xxxx,jpg',open('/home/lyb/sjzl.mpg','rb'))}  #设置文件名
#或
url = 'http://www.baidu.com'
data={"user":"user","password":"pass"}
res2 = requests.post(url1, data=data, headers=headers ,files=files)

POST发送JSON数据:

import json

r = requests.post('https://api.github.com/some/endpoint', data=json.dumps({'some': 'data'}))

print(r.json())
r = requests.get('http://ip.taobao.com/service/getIpInfo.php?ip=122.88.60.28')
print (r.json()['data']['country'])

添加代理:

proxies = {
  "http": "http://10.10.1.10:3128",
  "https": "http://10.10.1.10:1080",
}
requests.get("http://www.zhidaow.com", proxies=proxies)

一些操作requests返回值的方法:

r.text  #字符串方式的响应体,会自动根据响应头部的字符编码进行解码
r.content   #获得二进制响应内容
r.raw   #获得原始响应内容,需要stream=True
r.raw.read(50)
type(r.text)    #返回解码成unicode的内容
r.url
r.history   #追踪重定向
r.cookies
r.cookies['example_cookie_name']
r.headers   #以字典对象存储服务器的响应头,但该字典比较特殊,字典键不区分大小写,若键不存在返回None
r.headers['Content-Type']
r.headers.get('content-type')
r.json  #讲返回内容编码为json
r.encoding  #返回内容编码
r.status_code   #返回http状态码
r.raise_for_status()    #返回错误状态码

若编码出错,则r.text.encode('utf-8')


Session()

#初始化一个session对象
s = requests.Session()

#使用这个session对象来进行访问
prepped1 = requests.Request('POST', url1,
    data=data,
    headers=headers
).prepare()
s.send(prepped1)
#或 r = s.post(url,data = user)

其他的一些访问方式:
>>> 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模块的参数而已。这也说明了它的强大,但是前提是你必须懂对应的原理。参数如下:

json: json数据传到requests的body
headers: HTTP Headers的字典传到requests的header
cookies: 可以使用字典或者CookieJar object
files: 字典{'name': file-tuple} 来实现multipart encoding upload, 2参数元组 ('filename', fileobj), 3参数元组 ('filename', fileobj, 'content_type')或者 4参数元组 ('filename', fileobj, 'content_type', custom_headers), 其中'content-type' 用于定于文件类型和custom_headers文件的headers
auth: Auth元组定义用于Basic/Digest/Custom HTTP Auth
timeout: 连接等待时长
allow_redirects: 布尔型, True代表POST/PUT/DELETE只有的重定向是允许的
proxies: 代理的地址
verify: 用于认证SSL证书
stream: False代表返回内容立刻下载
cert: String代表ssl client证书地址(.pem) Tuple代表('cert', 'key')键值对

其他参考资料:

网页数据压缩deflate&gzip

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,858评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,372评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,282评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,842评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,857评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,679评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,406评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,311评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,767评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,945评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,090评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,785评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,420评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,988评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,101评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,298评论 3 372
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,033评论 2 355

推荐阅读更多精彩内容