Проблема перенаправления URL-адреса в Python - PullRequest
1 голос
/ 29 июня 2011

У меня есть ссылка, которую я знаю, перенаправляет на другой конечный URL-адрес, и я пытаюсь получить адрес для этого конечного URL-адреса с помощью Python.Но оригинальная ссылка немного странная и не работает как обычный редирект, и я не могу понять, почему.Когда я публикую ссылку (если хотите, ссылку ниже, попробуйте) в браузере, она отлично перенаправляет.Но когда я запускаю следующий код, это не так.

import urllib2
request = urllib2.Request('http://www.facebook.com/ajax/emu/end.php?eid=AQJSWpZ3e4cCTHoNdahpJzPYzmzHOENzbTWBVlW4SgIxX0rL9bo6NXmS3q06cjeh5jO9wbsmr3IyGrpbXPSj0GPLbRJl4VUH-EBnmSy_R4j7iYzpMe1ooZ6IEqSEIlBl0-5SEldIhxI82m75YPa5nOhuBdokiwTw79hoiRB-Zn1auxN-6WLVe3e5WNSt3HLAEjZL-2e4ox_7yAyLcBo1nkamEvShTyZ-GfIf0A9oFXylwRnV8oNaqNmUnqrFYqDbUhzh7d6LSm3jbv1ue2coS3w8N7OxTKVwODHa-Hd3qRbYskB9weio8eKdDFtkvDKuzSSq5hjr711UjlDsgpxLuAmdD95xVwpomxeEsBsMCYJoUEQYa-cM7q3W1aiIYBHlyn2__t74qHWVvzK5zaLKFMKjRFQqphDlUMgMni6AP1VHSn1wli_3lgeVD8TzcJMSlJIF7DC_O44WdjBIMY8OufER3ZB_mm2NqwUe6cvV9oV9SNyYHE4UUURYjW_Z6sUxz3SpHG8c6QxJ-ltSeShvU3mIwAhFE3M0jGTg7AQ7nIoOUfC8PDainFZ1NV8g31aqaqDsF7UxdlOmBT6w-Y8TPmHOXfSlWB-M3MQYUBmcWS3UzlbSsavQG8LXPqYbyKfvkAfncSnZS3_tkoqbTksFirQWlSxJ3mgXrO5PqopH63Esd9ynCbFQM1q_3_wgkYvTeGS9XK6G63_Ag3N9dCHsO_bCJToJT4jeHQCSQ83cb1U5Qpe_7EWbw1ilzgyL-LBVrpH424dwK-4AoaL00W-gWzShSdOynjcoGeB7KE0pHbg-XhuaVribSodriSGybNdADBosnddVvZldY22-_97MqEuA&amp&c=4&amp&f=4&amp&ui=6003071106023-id_4e0b51323f9d01393198225&amp&en=1&amp&a=0&amp&sig=78154')
opener = urllib2.build_opener()
f = opener.open(request)
f.geturl()

Я просто вернул свой оригинальный URL.Я сталкиваюсь с той же проблемой, когда сохраняю куки и использую механизацию.Любая помощь приветствуется!Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 июня 2011

Похоже, что это использует Javascript для выполнения перенаправления. Вам нужно либо выяснить, как именно Javascript выполняет перенаправления, и извлечь соответствующие URL-адреса, либо вам придется запустить Javascript. Насколько я знаю, запуск Javascript из python - непростая задача.

0 голосов
/ 29 июня 2011

(оригинальный ответ удален)

Если вы посмотрите на содержание f.read(), вы увидите, что здесь происходит.Вместо того чтобы возвращать 301 или 302, которые перенаправляют на новый URL, Facebook фактически возвращает настоящий HTML-документ, который содержит фрагмент Javascript, который использует document.location.replace для изменения URL в браузере.

Нет ничего простогоспособ воспроизвести это с помощью Python - лучше всего проанализировать документ с помощью чего-то вроде BeautifulSoup, чтобы найти Javascript и каким-то образом извлечь новый URL.Это не будет красиво.

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