2012-11-30 69 views
6

標題幾乎說明了一切。這裏是我的代碼:ValueError:未知的url類型

from urllib2 import urlopen as getpage 
print = getpage("www.radioreference.com/apps/audio/?ctid=5586") 

和這裏的追蹤錯誤,我得到:

Traceback (most recent call last): 
    File "C:/Users/**/Dropbox/Dev/ComServ/citetest.py", line 2, in <module> 
    contents = getpage("www.radioreference.com/apps/audio/?ctid=5586") 
    File "C:\Python25\lib\urllib2.py", line 121, in urlopen 
    return _opener.open(url, data) 
    File "C:\Python25\lib\urllib2.py", line 366, in open 
    protocol = req.get_type() 
    File "C:\Python25\lib\urllib2.py", line 241, in get_type 
    raise ValueError, "unknown url type: %s" % self.__original 
ValueError: unknown url type: www.radioreference.com/apps/audio/?ctid=5586 

我最好的猜測是,urllib的不能檢索從凌亂的PHP的網址數據。如果是這樣,是否有解決方法?如果不是,我做錯了什麼?

+2

將「http://」添加到url。 – iMom0

回答

8

您應該先嚐試在網址前添加'http://'不是將結果存儲在print中,因爲它綁定了對另一個(不可調用)對象的引用。

所以這條線應該是:

page_contents = getpage("http://www.radioreference.com/apps/audio/?ctid=5586") 

這將返回象對象的文件。要閱讀其內容,您需要使用不同的文件操作方法,如下所示:

for line in page_contents.readlines(): 
    print line 
+0

謝謝。你不僅回答我的問題,你回答我的下一個問題! ;) – Jamus

+0

我有同樣的錯誤,我用'wget'下載了網站,我該如何打開它? – hhh

3

您需要傳遞一個完整的URL:即它必須以http://開頭。

+0

謝謝,這個解決了吧:) – Jamus

2

只需使用http://www.radioreference.com/apps/audio/?ctid=5586,它會正常工作。

In [24]: from urllib2 import urlopen as getpage 

In [26]: print getpage("http://www.radioreference.com/apps/audio/?ctid=5586") 
<addinfourl at 173987116 whose fp = <socket._fileobject object at 0xa5eb6ac>> 
相關問題