Python urllib Request 用法
转载自:https://blog.csdn.net/ywy0ywy/article/details/52733839
python2.7 httplib, urllib, urllib2, requests 库的简单使用
httplib实现了HTTP协议,是比较底层的实现,一般不直接使用。
urllib, urllib2是对httplib的高层封装,urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。所以urllib常和urllib2一起使用。
requests是python第三方库,基于urllib,使用起来比urllib简便。
urllib
以打开百度的首页为例
import urllib
res = urllib.urlopen('http://www.baidu.com')
print res.getcode()
for line in res:
print line
res.close()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
urllib2
urllib2与urllib的使用类似,但urlopen时接收了一个Request实例,并且对response的读取要方便一些。
import urllib2
req = urllib2.Request('http://www.baidu.com')
res = urllib2.urlopen(req)
print res.code
print res.read()
res.close()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
urllib + urllib2
以百度的搜索为例,请求格式为 https://www.baidu.com/s?wd=xxx,用urllib的urlencode方法格式化参数wd=xxx
import urllib2
import urllib
url = 'http://www.baidu.com/s'
values = {'wd': 'word'}
data = urllib.urlencode(values)
req = urllib2.Request(url + '?' + data)
response = urllib2.urlopen(req)
print response.code
print response.read()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
httplib
import httplib
import urllib
values = {'wd': 'word'}
data = urllib.urlencode(values)
conn = httplib.HTTPConnection('www.baidu.com')
conn.request('GET', '/s?'+data)
response = conn.getresponse()
print response.status
print response.read()
conn.close()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
requests
在使用requests之前要确保你已经安装了requests模块,并且是最新的。如果没有,使用pip install requests安装。
import requests
url = 'http://www.baidu.com/s'
values = {'wd': 'word'}
res = requests.get(url, values)
print res.status_code
print res.content