码迷,mamicode.com
首页 > 编程语言 > 详细

python爬虫 - python requests网络请求简洁之道

时间:2015-08-29 12:38:32      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:python   爬虫   requests   

http://blog.csdn.net/pipisorry/article/details/48086195

requests简介

requests是python的一个HTTP客户端库,跟urllib,urllib2类似,但是python的标准库urllib2提供了大部分需要的HTTP功能,但是API太逆天了,一个简单的功能就需要一大堆代码。

Requests 使用的是 urllib3,因此继承了它的所有特性。Requests 支持 HTTP 连接保持和连接池,支持使用 cookie 保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。现代、国际化、人性化。

requests的功能特性
Requests 完全满足如今网络的需求:
国际化域名和 URLs
Keep-Alive & 连接池
持久的 Cookie 会话
类浏览器式的 SSL 加密认证
基本/摘要式的身份认证
优雅的键/值 Cookies
自动解压
Unicode 编码的响应体
多段文件上传
连接超时
支持 .netrc
适用于 Python 2.6—3.4
线程安全

皮皮Blog



requests和python自带urllib的对比

py2:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib2

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

req = urllib2.Request(gh_url)

password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_manager.add_password(None, gh_url, 'user', 'pass')

auth_manager = urllib2.HTTPBasicAuthHandler(password_manager)
opener = urllib2.build_opener(auth_manager)

urllib2.install_opener(opener)

handler = urllib2.urlopen(req)

print handler.getcode()
print handler.headers.getheader('content-type')

# ------
# 200
# 'application/json'
requests:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get('https://api.github.com', auth=('user', 'pass'))

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
皮皮Blog

[urllib2 vs requests]



requests使用举栗

安装

pip install requests


基本使用

  >>>import requests
>>> r = requests.get(‘http://www.****.com‘) # 发送请求
>>> r.status_code # 返回码 200
>>> r.headers[‘content-type‘] # 返回头部信息‘text/html; charset=utf8‘
>>> r.encoding # 编码信息‘utf-8‘
>>> r.text #内容部分(如果存在编码问题,也可以使用r.content)
u‘<!DOCTYPE html>\n<html xmlns="http://www.***/xhtml"...‘...


各种不同HTTP请求

  >>> r = requests.post("http://httpbin.org/post")
>>> 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")


带参数的请求

  >>> payload = {‘wd‘: ‘张亚楠‘, ‘rn‘: ‘100‘}
>>> r = requests.get("http://www.baidu.com/s", params=payload)
>>> print r.url
u‘http://www.baidu.com/s?rn=100&wd=%E5%BC%A0%E4%BA%9A%E6%A5%A0‘

Note: 这里的params可以不用自己进行urlencode的。


获取json结果

  >>>r = requests.get(‘...‘)
  >>>r.json()[‘data‘][‘country‘]
  ‘中国‘
皮皮Blog


python3 httplib2

不过小编皮皮告诉大家另一种python3的简洁网络请求之道

import httplib2

h = httplib2.Http(".cache")
h.add_credentials('user', 'pass')
r, content = h.request("https://api.github.com", "GET")

print r['status']
print r['content-type']
Note: 也是等同requests的几行代码啊![urllib2 vs requests]

from:http://blog.csdn.net/pipisorry/article/details/48086195

ref:Requests: HTTP for Humans


版权声明:本文为博主http://blog.csdn.net/pipisorry原创文章,未经博主允许不得转载。

python爬虫 - python requests网络请求简洁之道

标签:python   爬虫   requests   

原文地址:http://blog.csdn.net/pipisorry/article/details/48086195

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!