-2

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

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

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

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

    打印内容类型

  2. 如果爬虫得到:

    application/octet-stream
    
  3. 爬虫将从链接下载安装程序

问题是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 下载安装程序?

4

1 回答 1

1

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

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

于 2013-04-06T09:07:31.873 回答