Определение перенаправленного URL в Python - PullRequest
6 голосов
/ 04 апреля 2011

Я сделал небольшой парсер с использованием HTMLparser и хотел бы знать, куда перенаправляется ссылка.Я не знаю, как это объяснить, поэтому, пожалуйста, посмотрите этот пример:

На моей странице есть ссылка на источник: http://www.myweb.com?out=147, который перенаправляет на http://www.mylink.com.Я могу разобрать http://www.myweb.com?out=147 без проблем, но я не знаю, как получить http://www.mylink.com.

Ответы [ 2 ]

11 голосов
/ 04 апреля 2011

Вы можете использовать urllib2 (urllib.request в Python 3) и его HTTPRedirectHandler, чтобы узнать, куда будет перенаправлен URLвы.Вот функция, которая делает это:

import urllib2

def get_redirected_url(url):
    opener = urllib2.build_opener(urllib2.HTTPRedirectHandler)
    request = opener.open(url)
    return request.url

print get_redirected_url("http://google.com/")
# prints "http://www.google.com/"
3 голосов
/ 04 апреля 2011

Невозможно получить URL перенаправления путем анализа исходного кода HTML.Перенаправления запускаются сервером, а НЕ клиентом.Вам необходимо выполнить HTTP-запрос к соответствующему URL-адресу и проверить HTTP-ответ сервера - в частности, для кода состояния HTTP 304 (перенаправление) и нового URL-адреса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...