2016-01-17 142 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')] –