2012-02-23 11 views
8

मैं बस यहां क्या हो रहा है इसके बारे में एक बेहतर विचार चाहता हूं, मैं निश्चित रूप से urllib2 का उपयोग कर समस्या के आसपास "काम कर सकता हूं"।urllib.urlopen (url) urllib2.urlopen (url) काम करता है, जबकि विफल क्यों होता है। सर्वर प्रतिक्रिया के बारे में विशेष रूप से यह क्या कारण है?

import urllib 
import urllib2 

url = "http://www.crutchfield.com/S-pqvJFyfA8KG/p_15410415/Dynamat-10415-Xtreme-Speaker-Kit.html" 

# urllib2 works fine (foo.headers/foo.read() also behave) 
foo = urllib2.urlopen(url) 

# urllib throws errors though, what specifically is causing this? 
bar = urllib.urlopen(url) 

http://pae.st/AxDW/ अपवाद/स्टैकट्रेस के साथ कार्रवाई में इस कोड को दर्शाता है। foo.headers और foo.read() काम ठीक

[email protected] ~ $: curl -I "http://www.crutchfield.com/S-pqvJFyfA8KG/p_15410415/Dynamat-10415-Xtreme-Speaker-Kit.html"

HTTP/1.1 302 Object Moved 
Cache-Control: private 
Transfer-Encoding: chunked 
Content-Type: text/html; charset=utf-8 
Location: /S-FSTWJcduy5w/p_15410415/Dynamat-10415-Xtreme-Speaker-Kit.html 
Server: Microsoft-IIS/7.5 
Set-Cookie: SESSIONID=FSTWJcduy5w; domain=.crutchfield.com; expires=Fri, 22-Feb-2013 22:06:43 GMT; path=/ 
Set-Cookie: SYSTEMID=0; domain=.crutchfield.com; expires=Fri, 22-Feb-2013 22:06:43 GMT; path=/ 
Set-Cookie: SESSIONDATE=02/23/2012 17:07:00; domain=.crutchfield.com; expires=Fri, 22-Feb-2013 22:06:43 GMT; path=/ 
X-AspNet-Version: 4.0.30319 
HostName: cws105 
Date: Thu, 23 Feb 2012 22:06:43 GMT 

धन्यवाद।

उत्तर

7

यह सर्वर गैर-निर्धारक और HTTP संस्करण के प्रति संवेदनशील दोनों है। urllib2 HTTP/1.1 है, urllib HTTP/1.0 है। आप पंक्ति में कुछ बार curl --http1.0 -I "http://www.crutchfield.com/S-pqvJFyfA8KG/p_15410415/Dynamat-10415-Xtreme-Speaker-Kit.html" चलाकर इसे पुन: उत्पन्न कर सकते हैं। आपको कभी-कभी curl: (52) Empty reply from server आउटपुट देखना चाहिए; त्रुटि urllib त्रुटि है। (यदि आप urllib के साथ अनुरोध का एक गुच्छा जारी करते हैं, तो इसे कभी-कभी सफल होना चाहिए।)

+0

ऐसा लगता है कि urllib.urlopen (url) केवल 10% के तहत काम करता है। गैर-निर्धारिती सर्वर के लिए हुरेय! –

0

मैंने समस्या हल की। मैं अब urllib2 के बजाय urrlib का उपयोग कर रहा हूं और कुछ भी ठीक काम करता है आप सभी को धन्यवाद :)

संबंधित मुद्दे