2012-11-30 65 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>> 
相关问题