2013-04-05 69 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