2013-05-21 70 views
0

我正在開發一個在帶有Django框架的Apache服務器上運行的應用程序。當前腳本在本地桌面上運行時沒有問題(沒有Django)。該腳本將所有圖像從網站下載到桌面上的文件夾。但是,當我在服務器上運行腳本時,只是由Django創建了一個文件對象,顯然它有一些東西(應該是谷歌的標識),但是,我無法打開文件。我也創建一個html文件,更新圖像鏈接位置,但html文件被創建好,我假設因爲它是全部文本,也許?我相信我可能不得不在某處使用文件包裝,但我不確定。任何幫助表示讚賞,下面是我的代碼,謝謝!無法打開在Django中創建的文件對象

from django.http import HttpResponse 
from bs4 import BeautifulSoup as bsoup 
import urlparse 
from urllib2 import urlopen 
from urllib import urlretrieve 
import os 
import sys 
import zipfile 
from django.core.servers.basehttp import FileWrapper 

def getdata(request): 
out = 'C:\Users\user\Desktop\images' 
if request.GET.get('q'): 
    #url = str(request.GET['q']) 
    url = "http://google.com" 
    soup = bsoup(urlopen(url)) 
    parsedURL = list(urlparse.urlparse(url)) 

    for image in soup.findAll("img"): 
     print "Old Image Path: %(src)s" % image 
    #Get file name 
    filename = image["src"].split("/")[-1] 
    #Get full path name if url has to be parsed 
    parsedURL[2] = image["src"] 
    image["src"] = '%s\%s' % (out,filename) 
    print 'New Path: %s' % image["src"] 
    #  print image 
    outpath = os.path.join(out, filename) 

    #retrieve images 
    if image["src"].lower().startswith("http"): 
     urlretrieve(image["src"], outpath) 
    else: 
     urlretrieve(urlparse.urlunparse(parsedURL), out) #Constructs URL   from tuple (parsedURL) 

    #Create HTML File and writes to it to check output (stored in same directory). 
    html = soup.prettify("utf-8") 
    with open("output.html", "wb") as file: 
     file.write(html) 


else: 
    url = 'You submitted nothing!' 

return HttpResponse(url) 
+0

分享的附加說明可能有幫助:在該文件的屬性下,Windows列出屬性A,這意味着Windows根據我的理解將其識別爲存檔文件。 – johns4ta

+1

這裏涉及多個因素。對於一個我不確定谷歌會服務的標準頁面。 Google可能會爲不同的用戶代理提供不同的服務。你也說這些是存檔,我不知道,但你應該看到的內容標題,你可能能夠找到編碼,它應該是gzip或什麼 – dusual

+0

我剛剛使用谷歌,因爲它只包含一個圖像在頁面上解析。我嘗試使用7-zip打開文件,但我收到一條錯誤消息,說它無法打開文件作爲存檔。 – johns4ta

回答

0

我的問題與將文件存儲在桌面上有關。我將這些文件存儲在DJango工作區文件夾中,更改了路徑,併爲我工作。

相關問題