2013-04-05 71 views
-2

我有我自己的Python爬虫(基于CS101从Udacity.com),尝试下载从download.cnet.com,当履带式爬行,我希望它是这样工作的文件(安装):如何抓取并从动态网址下载文件?

  1. 告诉如果该链接是一个下载链接:

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

    CONTENT_TYPE = response.info()得到( '内容类型')

    打印CONTENT_TYPE

  2. 如果履带变:

    application/octet-stream 
    
  3. 抓取工具会从链接

下载安装程序问题是download.com似乎没有提供真正的d下载链接,我的抓取工具无法从其动态链接中找到下载链接。例如,当我尝试在download.com下载Opera时,他们确实有这样的消息:“您的下载将立即开始,如果没有,请重新开始下载。”但是,当我选中“重新启动下载”链接时,我期待获得真正的下载链接(例如download.com/blah/Opera.exe),而我有一些我的抓取工具无法理解的奇怪地址。

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

回答

1

正如您所说的,很可能您在页面中获取JavaScript或AJAX,在“真实”浏览器中激活下载,同时阻止您简化自动化操作。

下面是对同一问题的另一个讨论:StackOverflow: Mechanize and JavaScript。如前所述,一种选择是使用诸如PhantomJS之类的Python替代品或者Selenium之类的浏览器自动化框架(可选“遥控器”)。

+0

我同意。我将使用像PhantomJS或HTMLUnitDriver这样的无头浏览器抓取程序作为Selenium的一部分。 – djangofan 2013-04-06 21:30:35