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)
分享的附加說明可能有幫助:在該文件的屬性下,Windows列出屬性A,這意味着Windows根據我的理解將其識別爲存檔文件。 – johns4ta
這裏涉及多個因素。對於一個我不確定谷歌會服務的標準頁面。 Google可能會爲不同的用戶代理提供不同的服務。你也說這些是存檔,我不知道,但你應該看到的內容標題,你可能能夠找到編碼,它應該是gzip或什麼 – dusual
我剛剛使用谷歌,因爲它只包含一個圖像在頁面上解析。我嘗試使用7-zip打開文件,但我收到一條錯誤消息,說它無法打開文件作爲存檔。 – johns4ta