0

Django フレームワークを使用して Apache サーバー上で実行されるアプリケーションを開発しています。現在のスクリプトは、ローカル デスクトップ (Django なし) で実行すると正常に動作します。このスクリプトは、すべての画像を Web サイトからデスクトップ上のフォルダーにダウンロードします。ただし、サーバーでスクリプトを実行すると、Djangoによってファイルオブジェクトが作成され、明らかに何かが含まれています(Googleのロゴである必要があります)が、ファイルを開くことができません。また、html ファイルを作成し、画像リンクの場所を更新しましたが、html ファイルは正常に作成されました。どこかでファイルラッパーを使用する必要があると思いますが、よくわかりません。以下は私のコードです、ありがとう!

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)
4

1 に答える 1

0

私の問題は、ファイルをデスクトップに保存することに関係していました。ファイルを DJango ワークスペース フォルダーに保存し、パスを変更したところ、うまくいきました。

于 2013-06-11T12:52:47.170 に答える