2016-01-17 98 views
0

我使用urllib2来获取web链接的最终重定向url。对于如:http://tbk.bz/t72qx4v3 我得到的链接为:如何获取具有一些JavaScript的最终重定向URL?

http://taskbucks.com/artcl_out?artcl=24713df2ffb748ec8464638df61d2298 

但是,浏览器给重定向的URL最终像这样:

www.holidayiq.com/blog/6-high-octane-adventure-sports-in-india-that-will-get-your-heart-in-your-throat-1831.html/ 

我想在python拿到这最后的URL。

+0

发布您的代码片段 – phoenix

回答

0

的问题是http://taskbucks.com/artcl_out?artcl=24713df2ffb748ec8464638df61d2298页面上,有一个“文件准备就绪”事件侦听器,使浏览器提交负载的形式最终将您重定向到最后一页:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#fsid").val(new Fingerprint().get()); 
     $("#fsidpe").val(new Fingerprint({canvas: true}).get()); 
     submitReport(); 
    }); 
    function submitReport() { 
     $("#articleCheck").submit(); 
    } 
</script> 

urllib2是不是浏览器,并且不会在网页加载时提交表单。

相反,我会用像Mechanize工具,以提交此表:

>>> import mechanize 
>>> 
>>> br = mechanize.Browser() 
>>> br.open("http://tbk.bz/t72qx4v3") 
>>> br.select_form("articleCheck") 
>>> br.submit() 
>>> br.geturl() 
'http://www.holidayiq.com/blog/6-high-octane-adventure-sports-in-india-that-will-get-your-heart-in-your-throat-1831.html?utm_source=taskbucks&utm_medium=share&utm_campaign=referral&channel=taskbucks' 
+0

@ alexce,它的工作 –

+0

我试图通过增加独特的用户代理添加到它。 br.addheaders = [( '用户代理', '的Android')] –