2012-02-13 8 views
7

httplib2 और urllib2 का उपयोग करके, मैं इस यूआरएल से पृष्ठों को लाने की कोशिश कर रहा हूं, लेकिन उनमें से सभी काम नहीं कर पाए और इस अपवाद के साथ समाप्त हो गए।यह यूआरएल BadStatusLine को httplib2 और urllib2 के साथ क्यों बढ़ाता है?

content = conn.request(uri="http://www.zdnet.co.kr/news/news_print.asp?artice_id=20110727092902") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/dist-packages/httplib2/__init__.py", line 1129, in request 
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) 
    File "/usr/lib/python2.7/dist-packages/httplib2/__init__.py", line 901, in _request 
    (response, content) = self._conn_request(conn, request_uri, method, body, headers) 
    File "/usr/lib/python2.7/dist-packages/httplib2/__init__.py", line 871, in _conn_request 
    response = conn.getresponse() 
    File "/usr/lib/python2.7/httplib.py", line 1027, in getresponse 
    response.begin() 
    File "/usr/lib/python2.7/httplib.py", line 407, in begin 
    version, status, reason = self._read_status() 
    File "/usr/lib/python2.7/httplib.py", line 371, in _read_status 
    raise BadStatusLine(line) 

HTTP हेडर इस

http://www.zdnet.co.kr/news/news_print.asp?artice_id=20110727092902 

GET /news/news_print.asp?artice_id=20110727092902 HTTP/1.1 
Host: www.zdnet.co.kr 
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: ko-kr,ko;q=0.8,en-us;q=0.5,en;q=0.3 
Accept-Encoding: gzip, deflate 
Connection: keep-alive 
Cookie: RMID=7d83495d4f336fe0; __utma=37206251.1552605885.1328771258.1328771258.1329070845.2; __utmz=37206251.1328771258.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); ASPSESSIONIDCSQCQTDD=BCLEHPPDEPHEBJDLCFNDMKDN; __utmc=37206251; ASPSESSIONIDSSQCQQCB=MJPLMOJAFPDFCLONCANBIKHN; _EXEN=2 
X-FireLogger: 1.2 

HTTP/1.1 200 OK 
Date: Mon, 13 Feb 2012 18:02:56 GMT 
Content-Length: 19158 
Content-Type: text/html;charset=UTF-8; Charset=UTF-8 
Set-Cookie: ASPSESSIONIDSQSDQRDB=NGAIFHKAGDIOGEMANAOLLKKF; path=/ 
Cache-Control: private 

कोई सुराग की तरह था?

+0

कृपया अपना कनेक्ट स्टेटमेंट पोस्ट करें। – Nix

उत्तर

3

यह मेरे लिए ठीक काम करता है:

import urllib2 

opener = urllib2.build_opener() 

headers = { 
    'User-Agent': 'Mozilla/5.0 (Windows NT 5.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1', 
} 

opener.addheaders = headers.items() 
response = opener.open("http://www.zdnet.co.kr/news/news_print.asp?artice_id=20110727092902") 

print response.headers 
print response.read() 

वेबसाइट सभी अनुरोधों कि एक User-Agent स्ट्रिंग के बिना हो छोड़ देता है।

1

ऐसा लगता है कि इस वेबपृष्ठ को आपके उपयोगकर्ता एजेंट की अनुमति नहीं है। मेरी कोड में

>>> import urllib2 
>>> user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' 
>>> headers = { 'User-Agent' : user_agent } 
>>> r = urllib2.Request('http://www.zdnet.co.kr/news/news_print.asp?artice_id=20110727092902', headers=headers) 
>>> fd = urllib2.urlopen(r) 
>>> print fd[20:] 
'<!DOCTYPE html PUBLI' 
2

, जब मैं

from urllib2 import urlopen 
    content = urlopen(page).read() 

अपवाद प्रतीत होता है का उपयोग करें: आप इस तरह बदल सकते हैं। हालांकि, जब मैं

import urllib 
    content = urllib.urlopen(page).read() 

सबकुछ ठीक है। शायद यह आपकी मदद करेगा।

+1

यह मेरी समस्या हल हो गया। धन्यवाद। लेकिन यह जानना अच्छा होगा कि urllib2 क्यों काम नहीं करता है। –

4

सभी लोगों कि httplib2 0.8 स्थापित करने के बाद एक ऐसी ही समस्या के साथ यहाँ अंत के लिए:

संस्करण 0.8 कनेक्शन HTTP जीवित-रखें साथ संबंध में निपटने के साथ एक प्रतिगमन है। बग रिपोर्ट देखें: https://code.google.com/p/httplib2/issues/detail?id=250

इस मुद्दे के लिए एक फिक्स है, लेकिन इसे अब तक जारी नहीं किया गया है। तब तक केवल httplib2 0.7.7 का उपयोग करें।

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