推荐使用requests代替urllib【python】

说明:之前爬虫时读取网址内容用的都是urllib,这是python自带的,但如果使用复杂点的功能,还是推荐requests第三方库,这是因为这个库很优秀

1、比较,参考自: http://www.jb51.net/article/63711.htm:

一个复杂一点的例子:
现在让我们尝试下复杂点得例子:使用GET方法获取http://foo.test/secret的资源,这次需要基本的http验证。使用上面的代码作为模板,好像我们只要把urllib2.urlopen() 到requests.get()之间的代码换成可以发送username,password的请求就行了
这是urllib2的方法:

import urllib2
url = ‘http://example.test/secret
password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_manager.add_password(None, url, ‘dan’, ‘h0tdish’)
auth_handler = urllib2.HTTPBasicAuthHandler(password_manager)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
response = urllib2.urlopen(url)
response.getcode()
200
response.read()
‘Welcome to the secret page!’
一个简单的方法中实例化了2个类,然后组建了第三个类,最后还要装载到全局的urllib2模块中,最后才调用了urlopen,那么那两个复杂的类是什么的
迷惑了吗, 这里所有urllib2的文档 http://docs.python.org/release/2.7/library/urllib2.html

那Requests是怎么样解决同样的问题的呢?
Requests

import requests
url = ‘http://example.test/secret
response = requests.get(url,auth=(‘dan’,’h0tdish’))
response.status_code
200
response.content
u’Welcome to the secret page!’
只是在调用方法的时候增加了一个auth关键字函数

2、requests的documents官网: http://www.python-requests.org/en/master/
建议阅读下其documents,写的还是挺清楚的。

3、基本使用:
import requests
r = requests.get(‘https://api.github.com/events‘)
r.text
r.content # 以字节的方式访问请求响应体,对于非文本请求

r = requests.post(‘http://httpbin.org/post‘, data = {‘key’:’value’})