我有一个链接,我知道重定向到另一个结束URL,我正在尝试使用python获取该结束URL的地址。但原始链接有点奇怪,并不像普通的重定向那样工作,我无法弄清楚原因。当我将链接(您尝试下面的链接,如果您愿意)发布到浏览器中时,它会完美地重定向。但是,当我运行以下代码时,它没有。
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&&c=4&&f=4&&ui=6003071106023-id_4e0b51323f9d01393198225&&en=1&&a=0&&sig=78154')
opener = urllib2.build_opener()
f = opener.open(request)
f.geturl()
我只是回到原来的网址。当我保存cookie并使用机械化时遇到同样的问题。任何帮助将非常感激!谢谢!
答案 0 :(得分:0)
(原始答案已删除)
如果你查看f.read()
的内容,你会看到这里发生了什么。 Facebook实际上返回一个真实的HTML文档,而不是返回重定向到新URL的301或302,它包含一段使用document.location.replace
更改浏览器中URL的Javascript。
没有简单的方法可以用Python复制 - 最好的办法是使用BeautifulSoup之类的东西解析文档以找到Javascript,并以某种方式提取新的URL。它不会很漂亮。
答案 1 :(得分:0)
看起来这是使用Javascript来执行重定向。您要么必须弄清楚Javascript如何执行重定向并拔出相应的网址,要么您必须实际运行Javascript。据我所知,从python运行Javascript并不是一件容易的事。