Мне нужно проверить, перенаправляется ли страница, без фактической загрузки содержимого. Мне просто нужен конечный URL. Какой лучший способ сделать это - Python? Спасибо!
Когда вы открываете URL-адрес с помощью urllib2
и вас перенаправляют, вы получаете статус 30x для перенаправления. Проверьте информацию, чтобы увидеть, куда вы перенаправлены. Вам не нужно читать страницу, чтобы прочитать info()
, который является частью ответа.
Вам не обязательно читать страницу. В вашем ответе есть сокет, который вы можете просто закрыть.
Да, но у вас все еще есть сетевой трафик. Смысл HEAD в том, чтобы не брать на себя сетевой трафик.
Если вы специально не хотите загружать контент, вам нужно использовать метод запроса HEAD. Я считаю, что библиотеки urllib
и urllib2
не поддерживают запросы HEAD, поэтому вам придется использовать библиотеку httplib
нижнего уровня:
import httplib
h = httplib.HTTPConnection('www.example.com')
h.request('HEAD', '/')
response = h.getresponse()
// Check for 30x status code
if 300 <= response.status < 400:
// It's a redirect
location = response.getheader('Location')
Большой. Я без особого успеха пытался заставить urllib / urllib2 сделать это, а документация httplib не самая лучшая. Спасибо!
@Adam Похоже, вы можете сделать это с помощью urllib2
. См. здесь.
Позволяет ли urllib2 выполнить команду HEAD? Обычно это способ получить именно ту информацию, которая вам нужна, без дополнительных затрат сети на передачу содержимого страницы.