Python URL 重定向问题

1 投票
2 回答
530 浏览
提问于 2025-04-16 20:32

我有一个链接,我知道它会重定向到另一个网址,我想用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()

我只得到了原来的网址。当我保存了cookies并使用mechanize时,也遇到了同样的问题。希望能得到一些帮助!谢谢!

2 个回答

0

(原答案已删除)

如果你查看一下 f.read() 的内容,你就会明白发生了什么。Facebook 并不是返回一个 301 或 302 的状态码来重定向到新网址,而是直接返回了一个真实的 HTML 文档——这个文档里面包含了一段 Javascript,它使用 document.location.replace 来改变浏览器中的网址。

用 Python 来实现这一点并不简单——最好的办法是用像 BeautifulSoup 这样的工具来解析这个文档,找到里面的 Javascript,然后提取出新的网址。这个过程可能会比较麻烦。

0

看起来这个是在用JavaScript来进行页面跳转。你要么得搞清楚JavaScript是怎么进行跳转的,然后找出合适的网址,要么就得直接运行这个JavaScript。根据我所知,从Python运行JavaScript并不是一件简单的事。

撰写回答