2010-05-27 11 views
6

यह आसान पायथन कोड क्यों काम नहीं कर रहा है?मुझे विंडोज़ पर काम करने के लिए पाइथन की urlopen() विधि क्यों नहीं मिल सकती है?

Traceback (most recent call last): 
    File "C:\workspace\GarchUpdate\src\Practice.py", line 26, in <module> 
    file = urllib.urlopen('http://www.google.com') 
    File "C:\Python26\lib\urllib.py", line 87, in urlopen 
    return opener.open(url) 
    File "C:\Python26\lib\urllib.py", line 206, in open 
    return getattr(self, name)(url) 
    File "C:\Python26\lib\urllib.py", line 345, in open_http 
    h.endheaders() 
    File "C:\Python26\lib\httplib.py", line 892, in endheaders 
    self._send_output() 
    File "C:\Python26\lib\httplib.py", line 764, in _send_output 
    self.send(msg) 
    File "C:\Python26\lib\httplib.py", line 723, in send 
    self.connect() 
    File "C:\Python26\lib\httplib.py", line 704, in connect 
    self.timeout) 
    File "C:\Python26\lib\socket.py", line 514, in create_connection 
    raise error, msg 
IOError: [Errno socket error] [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 

मैं कई अलग अलग पृष्ठों के साथ यह कोशिश की है, लेकिन मैं urlopen विधि सही ढंग से निष्पादित करने के लिए कभी नहीं प्राप्त कर सकते हैं:

import urllib 
file = urllib.urlopen('http://www.google.com') 
print file.read() 

यह त्रुटि है कि मैं हो रही है।

+1

मेरे लिए ठीक काम करता है। शायद आपकी फ़ायरवॉल सेटिंग्स जांचना चाहें। – Syntactic

+0

@ सिंटैक्टिक - इसके बारे में सोच रहा था ... मेरे कार्यालय में वास्तव में एक मजबूत फ़ायरवॉल है। लेकिन मैं किसी भी समस्या के बिना ब्राउज़र में पेज पर नेविगेट कर सकता हूं। – froadie

+0

जांचें कि आपके पायथन के पास फ़ायरवॉल तक पहुंच है। क्षमा करें मुझे सटीक सेटिंग्स याद नहीं हैं, लेकिन आपके पर्यावरण में चर हैं जो यह निर्धारित करते हैं कि वेब पर पाइथन कैसे प्राप्त होता है (फ़ायरवॉल/प्रॉक्सी/आदि)। – KevinDTimm

उत्तर

4

आपका कोड यहां समस्या नहीं है।

क्या आपके पास आईई में कोई प्रॉक्सी सेटिंग्स है?

यह कहते urllib.urlopen के लिए अजगर प्रलेखन:
"" "
एक Windows वातावरण में, कोई प्रॉक्सी वातावरण चर सेट कर रहे हैं,
प्रॉक्सी सेटिंग्स रजिस्ट्री के इंटरनेट सेटिंग से प्राप्त कर रहे हैं
अनुभाग
। ""

1

यदि आपके पास वायरशर्क है, तो जांचें कि क्या भेजा जा रहा है और यदि कुछ भी वापस आ रहा है। यदि आप जीईटी अनुरोध भेजा जा रहा है तो यह आपको समस्या को डीबग करने में मदद करेगा।

इसके अलावा मैं इस तरह एक बार इसी तरह की समस्या हो रही है, क्या मैंने किया फ्लश मेरी DNS कैश

(ipconfig/flushdns) और पुन: प्रारंभ हो गया था याद है। यह मेरी समस्या तय की। मुझे लगता है कि यह कोशिश करने के लिए चोट नहीं है।

3

यदि कोड की कुछ पंक्तियों को बदलने के लिए व्यवहार्य है तो urllib2 का उपयोग करने का प्रयास करें।

urllib2.urlopen(http://www.abc.com/api, timeout=20) 

यहां कनेक्शन लंबी अवधि के लिए बनी रहती है: सेकंड

उदाहरण के लिए में टाइमआउट तर्क निर्धारित करें। तो यदि उदाहरण के लिए आप एक एक्सएमएल फ़ाइल पढ़ रहे हैं जो बहुत बड़ा है तो यह अपूर्ण पढ़ने से बचाता है।

उपरोक्त कोड कभी भी काम नहीं करेगा यदि नेट कनेक्शन धीमा है या अचानक टूट जाता है।

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