【问题标题】:How to crawl and download files from a dynamic URL?如何从动态 URL 抓取和下载文件?
【发布时间】:2013-03-28 11:37:49
【问题描述】:

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

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

    响应 = 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 下载安装程序?

【问题讨论】:

    标签: python download web-crawler


    【解决方案1】:

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

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

    【讨论】:

    • 我同意。我会使用像 PhantomJS 或 HTMLUnitDriver 这样的无头浏览器爬虫,作为 Selenium 的一部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 2011-02-03
    相关资源
    最近更新 更多