我正在使用Python 2.6.x和urllib2进行一些网页抓取,但我需要每个HTTP请求真正的低级套接字信息(实际上只是本地套接字的端口号)。有谁知道怎么做到这一点?
由于
修改
好吧,我仍然试图做到这一点,所以我做了我认为应该工作但我在尝试使用新东西时没有得到输出。我在这里做错了什么?
from urllib2 import *
class AbstractHTTPHandler(AbstractHTTPHandler):
def do_open(self, http_class, req):
"""
...copy docstring...
"""
print "woot!"
...copy code from urllib2.AbstractHTTPHandler.do_open...
答案 0 :(得分:3)
urllib2可以在不同的URL方案上运行,这些方案甚至可能没有套接字的概念。相反,请使用http.client
的无证件 sock
属性:
try:
from http.client import HTTPConnection
except ImportError: # Python<3
from httplib import HTTPConnection
h = HTTPConnection('example.net', 80)
h.request('GET', '/')
print('Local port: ' + str(h.sock.getsockname()[1]))