我正在尝试了解urllib2如何工作以及如何在发送实际请求或响应之前封装其各种组件.
到目前为止,我有:
theurl = "www.example.com"
Run Code Online (Sandbox Code Playgroud)
这显然指定了要查看的URL.
req = urllib2.Request(theurl)
Run Code Online (Sandbox Code Playgroud)
不知道这是做什么的,因此问题.
handle = urllib2.urlopen(req)
Run Code Online (Sandbox Code Playgroud)
这个获取页面并完成所需的所有请求和响应.
所以我的问题是,urllib2.Request实际上做了什么?
试着看看它以获得一个我尝试过的想法
print req
Run Code Online (Sandbox Code Playgroud)
刚刚得到
<urllib2.Request instance at 0x123456789>
Run Code Online (Sandbox Code Playgroud)
我也试过了
print req.read()
Run Code Online (Sandbox Code Playgroud)
得到了:
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib64/python2.4/urllib2.py, line 207, in `__`getattr`__`
raise AttributeError, attr
AttributeError: read
Run Code Online (Sandbox Code Playgroud)
所以我显然做错了什么.如果有人可以在我的两个问题中提供帮助,那就太棒了.
dka*_*ins 17
您询问的"请求"类:http: //docs.python.org/library/urllib2.html#urllib2.Request
class urllib2.Request(url [,data] [,headers] [,origin_req_host] [,unverifiable])
此类是URL请求的抽象.
您实际想要发出请求的函数(可以接受一个Request对象或围绕您建议的URL字符串包装一个)构建一个Request对象):http://docs.python.org/library/urllib2.html#urllib2.urlopen
urllib2.urlopen(url [,data] [,timeout])打开URL url,可以是字符串,也可以是Request对象.
例:
theurl = "www.example.com"
try:
resp = urllib2.urlopen(theurl)
print resp.read()
except IOError as e:
print "Error: ", e
Run Code Online (Sandbox Code Playgroud)
例2(带Request):
theurl = "www.example.com"
try:
req = urllib2.Request(theurl)
print req.get_full_url()
print req.get_method()
print dir(req) # list lots of other stuff in Request
resp = urllib2.urlopen(req)
print resp.read()
except IOError as e:
print "Error: ", e
Run Code Online (Sandbox Code Playgroud)