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:Python25liburllib2.py", line 121, in urlopen
    return _opener.open(url, data)
  File "C:Python25liburllib2.py", line 366, in open
    protocol = req.get_type()
  File "C:Python25liburllib2.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. если это так, есть ли обойти? Если нет, то что я делаю не так?

3 ответов


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

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

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

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

for line in page_contents.readlines():
    print line

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


просто использовать 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>>