我想在python中基於Google App Engine製作Web應用程序。其中的一部分涉及在IMDb上展示Movie的海報。我有鏈接到海報。例如。 http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1._SX94_SY140_.jpg
在數據存儲區中作爲Blob存儲在html頁面中的圖像
然後我試圖把它放在一個HTML頁面:
<a href="https://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3.jpg">
<img src="https://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3.jpg">
</a>
圖像ISN;噸顯示和點擊它,會打開一個頁面,指出:
Referral Denied
You don't have permission to access " https://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3.jpg " on this server.
Reference #24.84d81002.1393249598.981ca7
通過this問題去,我才知道,IMDB不允許請示任何其他網站。解決方案是自己獲取圖像,保存並自行提供。 爲此,我跟着this link。
我做了一個數據存儲對象,存儲電影的各種信息以及使用urlfetch API獲取的海報。代碼的相關部分
from google.appengine.ext import db
from google.appengine.api import urlfetch
class Movie(db.Model):
title = db.StringProperty()
poster = db.BlobProperty(default=None)
coverurl = "https://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3.jpg"
movie = Movie()
posterimg = urlfetch.fetch(coverurl).content
movie.cover = db.Blob(posterimg)
movie.put()
現在,渲染HTML頁面,我從數據存儲電影對象
m = Movie.gql("WHERE title = :1", title).get()
img = m.posterimg
和HTML網頁被呈現爲
imghtml = ' <img src="' + img + '"> </a>'
預計錯誤並被接收爲:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)
這是什麼方法? 如何在數據存儲區中將圖像作爲Blob存儲在html圖像中?
我希望你不是說你在未經允許的情況下從他們的網站上偷取了圖片。 –
如果他們自己允許訪問我們,它會算作是偷竊嗎? – venky
訪問與複製不同。如果您在未經所有者許可的情況下複製圖像,則違反版權法。 –