2009-12-22 2 views
16
import urllib 

print urllib.urlopen('http://www.reefgeek.com/equipment/Controllers_&_Monitors/Neptune_Systems_AquaController/Apex_Controller_&_Accessories/').read() 

위의 스크립트가 작동하는 동안 예상 된 결과를 반환이 왜urllib2.urlopen() vs urllib.urlopen() - urllib가 작동하는 동안 urllib2가 404를 throw합니다! 왜?

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.5/urllib2.py", line 124, in urlopen 
    return _opener.open(url, data) 
    File "/usr/lib/python2.5/urllib2.py", line 387, in open 
    response = meth(req, response) 
    File "/usr/lib/python2.5/urllib2.py", line 498, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "/usr/lib/python2.5/urllib2.py", line 425, in error 
    return self._call_chain(*args) 
    File "/usr/lib/python2.5/urllib2.py", line 360, in _call_chain 
    result = func(*args) 
    File "/usr/lib/python2.5/urllib2.py", line 506, in http_error_default 
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
urllib2.HTTPError: HTTP Error 404: Not Found 

사람이 알고 있나요 :

import urllib2 

print urllib2.urlopen('http://www.reefgeek.com/equipment/Controllers_&_Monitors/Neptune_Systems_AquaController/Apex_Controller_&_Accessories/').read() 

다음과 같은 오류가 발생합니다? 저는 랩톱에서 프록시 설정이없는 가정용 네트워크에서 실행하고 있습니다. 랩톱에서 라우터로 바로 이동 한 다음 www로 이동합니다.

답변

35

그 URL은 실제로 404이지만 HTML 콘텐츠가 많습니다. urllib2이 (올바르게) 오류 상태로 처리 중입니다. 당신과 같이 해당 사이트의 404 페이지의 내용을 복구 할 수 있습니다 좋은

import urllib2 
try: 
    print urllib2.urlopen('http://www.reefgeek.com/equipment/Controllers_&_Monitors/Neptune_Systems_AquaController/Apex_Controller_&_Accessories/').read() 
except urllib2.HTTPError, e: 
    print e.code 
    print e.msg 
    print e.headers 
    print e.fp.read() 
+2

알고 - 호기심, 내 브라우저에이 URL을 입력 할 때, 그것은 또한 작동합니다. 이것은 브라우저가 404를 받고 있지만 urllib처럼 콘텐츠를 표시한다는 것을 의미합니까? –

+1

@Jerry 그렇습니다. 이것이 의미하는 바입니다. Firebug 또는 Safari/Chrome의 웹 검사기로이를 확인할 수 있습니다. –

+0

나는 방화 녀가 있고 그것을 검사했지만 404가 표시된 것을 보지 못했습니다. 특별한해야 할 일이 있습니까? 병적 인 호기심에서 브라우저가 왜 그런 저조한 표준을 견딜 수 있습니까? 왜 파일을 찾을 수 없다는 것을 나타내지 않는 것일까 요? 브라우저가 콘텐츠를 표시하고 대부분의 봇이 계속 진행될 것이라는 내용의 콘텐츠가 포함 된 404 페이지를 반환하여 봇을 방해하는 사이트 트릭입니다. –

관련 문제