#python #urllib2 #httprequest
#python #urllib2 #httprequest
Вопрос:
В принципе, я пытаюсь загрузить URL-адрес, используя urllib2 в python.
код следующий:
import urllib2
req = urllib2.Request('www.tattoo-cover.co.uk')
req.add_header('User-agent','Mozilla/5.0')
result = urllib2.urlopen(req)
он выводит ошибку значения, и программа выполняет поиск URL-адреса в примере.
Когда я получаю доступ к URL-адресу в браузере, он работает нормально.
Есть идеи, как справиться с проблемой?
Обновить:
спасибо Бену Джеймсу и почему проблема обнаружена => добавить ‘http: //’
Теперь вопрос уточнен: возможно ли обрабатывать такие случаи автоматически с помощью какой-либо встроенной функции или я должен выполнять обработку ошибок с последующей конкатенацией строк?
Ответ №1:
Когда вы вводите URL-адрес в браузере без протокола, по умолчанию используется HTTP. urllib2
не буду делать это предположение за вас; вам нужно добавить к нему префикс с http://
.
Ответ №2:
Вы должны использовать полный URL-адрес, включая протокол, а не просто указывать имя хоста.
Правильный URL-адрес будет http://www.tattoo-cover.co.uk/
.
Комментарии:
1. Да, sth, хорошее наблюдение! Итак, следующий вопрос: возможно ли преобразовать неверные URL-адреса в приемлемые с помощью urllib2 с помощью какой-либо встроенной функции, или я должен выполнить обработку ошибок с помощью манипулирования строками (путем объединения ‘http: //’ string ‘/’) самостоятельно
Ответ №3:
Вы можете использовать метод urlparse
из urllib
(Python 3), чтобы проверить наличие схемы адресации (http, https, ftp) и объединить схему в случае, если она отсутствует:
In [1]: from urllib.parse import urlparse
..:
..: url = 'www.myurl.com'
..: if not urlparse(url).scheme:
..: url = 'http://' url
..:
..: url
Out[1]: 'http://www.myurl.com'
Комментарии:
1. Действительно хотелось бы
urllib
сделать это автоматически
Ответ №4:
Я думаю, для этого можно использовать функцию urlparse :