如何从动态URL抓取和下载文件?

时间:2013-04-05 22:02:52

标签: python download web-crawler

我有自己的python爬虫(基于来自Udacity.com的CS101),试图从download.cnet.com下载文件(安装程序),当爬虫爬行时,我希望它像这样工作:

  1. 判断该链接是否为下载链接:

      
        
          

    response = urllib2.urlopen('http://example.com/')

                 

    content_type = response.info()。get('Content-Type')

                 

    print content_type

        
      
  2. 如果抓取工具获得:

    application/octet-stream
    
  3. 抓取工具将从链接下载安装程序
  4. 问题是download.com似乎没有提供真正的下载链接,我的抓取工具无法从其动态链接中找到下载链接。例如,当我尝试在download.com中下载Opera时,他们确实有这样的消息:“您的下载将在稍后开始。如果没有,请重新开始下载。”但是,当我选中“重新启动下载”链接时,我希望得到真正的下载链接(例如download.com/blah/Opera.exe),而不是我的抓取工具无法理解的地址。

    所以我已经从http://googlewebmastercentral.blogspot.no/2008/09/dynamic-urls-vs-static-urls.html确认download.com正在使用动态链接,但我该怎么办才能让我的抓取工具找到此链接,以便它可以从download.com下载安装程序? p>

1 个答案:

答案 0 :(得分:1)

正如您所说,您可能会在页面中获取JavaScript或AJAX,从而在“真实”浏览器中激活下载,同时阻碍您将其简单地自动化。

以下是对同一问题的另一种讨论:StackOverflow: Mechanize and JavaScript。如前所述,一种选择是使用Python的替代品,例如PhantomJS或浏览器自动化框架(带有可选的“远程控制”),例如Selenium。