0
我正在开发一个应用程序,它解析一个网页,然后下载网页上的图像。我正在使用WAMP作为框架的网络服务器和DJango。在我的本地计算机上,我实现的python脚本按预期运行(将图像正确下载到本地桌面),但是当我尝试在使用DJango和WAMP的web服务器上运行它时,出现错误[Errno 13] Permission denied: 'C:\用户\ user123 \桌面\图像'。下面是我的代码,任何想法是什么导致了错误。Django给予[Errno 13]权限被拒绝
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 = r'C:\Users\user123\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)
#
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 FileWrapper(open("output.html", "wb")) as file:
file.write(html)
#Create where zip file will be stored (same directory htmlparser file)
zip = zipfile.ZipFile('C:\Users\user123\Desktop\Images.zip', 'w')
#Path where file that will be zipped up is located
path = 'images'
#For each file, add it to the zip folder.
for root, dirs, files in os.walk(path):
for file in files:
zip.write(os.path.join(root, file))
zip.close()
else:
url = 'You submitted nothing!'
return HttpResponse(url)
感谢mawimawi的回应,这是我在WAMP/Django环境中做的事情,还是我在我正在使用的Windows桌面上单独设置文件夹权限? – johns4ta
我的猜测是Windows桌面上的文件夹权限。但是因为我从来没有部署到Windows(也没有在Windows中编码),所以我无法确定。 – mawimawi
我为每个人设置了文件夹权限,但没有解决问题。我在网上找到了一些线索,我会看看它们是否会导致任何问题。再次感谢! – johns4ta