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 не может извлекать данные из неопрятных URL-адресов php. если это так, есть ли обходной путь? Если нет, то что я делаю неправильно?


person Jamus    schedule 30.11.2012    source источник


Ответы (3)


Сначала попробуйте добавить 'http://' перед URL-адресом. Кроме того, не сохраняйте результаты в print, так как он привязывает ссылку к другому (не вызываемому) объекту.

Итак, эта строка должна быть:

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

Это возвращает файл, подобный объекту. Чтобы прочитать его содержимое, вам нужно использовать различные методы манипулирования файлами, например:

for line in page_contents.readlines():
    print line
person NlightNFotis    schedule 30.11.2012
comment
Спасибо. Вы не только ответили на мой вопрос, вы ответили на мой следующий! ;) - person Jamus; 30.11.2012
comment
У меня та же ошибка, и я загрузил веб-сайт с помощью wget, как мне его открыть? - person hhh; 05.02.2017

Вам нужно передать полный URL: т.е. он должен начинаться с http://.

person Daniel Roseman    schedule 30.11.2012

Просто используйте 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>>
person Ashwini Chaudhary    schedule 30.11.2012