我想解决与urllib2.urlopen问题。它似乎无法使用我的常规DNS服务器。以下是多次尝试打开各种网址的结果,首先使用Google公共DNS(8.8.8.8),然后使用我的路由器。 gridley在我的/ etc/hosts文件中定义。urllib2.urlopen无法使用我的普通DNS服务器查找主机名;挖等可以
Python 2.7.2 (default, Jun 29 2011, 11:17:09)
[GCC 4.6.1] on linux2
>>> import urllib2
>>> urllib2.urlopen("http://gridley")
<addinfourl at 158490988 whose fp = <socket._fileobject object at 0xb745f7ec>>
>>> urllib2.urlopen("http://google.com")
<addinfourl at 158492204 whose fp = <socket._fileobject object at 0x971842c>>
Python 2.7.2 (default, Jun 29 2011, 11:17:09)
[GCC 4.6.1] on linux2
>>> import urllib2
>>> urllib2.urlopen("http://gridley")
<addinfourl at 154808684 whose fp = <socket._fileobject object at 0xb73997ec>>
>>> urllib2.urlopen("http://google.com")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 394, in open
response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 412, in _open
'_open', req)
File "/usr/lib/python2.7/urllib2.py", line 372, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 1199, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.7/urllib2.py", line 1174, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno -5] No address associated with hostname
然而,查询google.com与挖表明,它绝对应该工作:
; <<>> DiG 9.8.1 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44377
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 190 IN A 74.125.225.83
google.com. 190 IN A 74.125.225.81
google.com. 190 IN A 74.125.225.82
google.com. 190 IN A 74.125.225.80
google.com. 190 IN A 74.125.225.84
;; Query time: 23 msec
;; SERVER: 192.168.7.254#53(192.168.7.254)
;; WHEN: Sun Sep 18 19:46:12 2011
;; MSG SIZE rcvd: 108
的IPv6带来了一些其他的问题,但它是完全关闭了,所以不能吧。到底他妈发生了什么?