如何获得具有一些JavaScript的最终重定向URL?

时间:2016-01-17 13:24:44

标签: python python-2.7 web-scraping urllib2

我使用urllib2来获取网络链接的最终重定向网址。例如:http://tbk.bz/t72qx4v3 我得到链接:

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。

1 个答案:

答案 0 :(得分: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'