我试图在我的jupyter notebook项目中显示一个图像,以便构建一个图形界面,但当我尝试使用url (我可以将url插入到浏览器中直接查看图像)时,它不让我显示它,并返回一个403错误。有什么办法可以解决这个问题吗?或者我是不是遗漏了一些显示文件本身的东西?
from IPython.display import Image
from IPython.core.display import HTML
x = Image(url= "https://stockcharts.com/c-sc/sc?s=%24NAA200R&p=D&b=5&g=0&i=0&r=1620689696568.png")[Here is the result I got from running the cell][1]发布于 2021-05-11 10:54:22
您缺少请求的标头,您可以尝试以下操作:
from PIL import Image
import requests
from io import BytesIO
import requests
url="https://stockcharts.com/c-sc/sc?s=%24NAA200R&p=D&b=5&g=0&i=0&r=1620689696568.png"
my_header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0'}
response = requests.get(url, headers=my_header)
print(f"Response :{response.status_code}")
img = Image.open(BytesIO(response.content))
img输出:

发布于 2021-05-11 10:59:02
我找到了一个解决方案,我不能直接显示图片,但可以打印它,所以我没有直接调用图片,而是创建了一个函数,它将下载图片并显示它,变量是所需的链接,这样我就可以使用它来连接我需要的几个链接。它不像我希望的那样干净,但它在这种情况下解决了403问题。
import urllib.request
from IPython.display import Image
def display_tool(x):
image_url = x
filename = "display.jpg"
req = urllib.request.build_opener()
req.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64)')]
urllib.request.install_opener(req)
urllib.request.urlretrieve(image_url, filename)
return Image(filename="display.jpg")
display_tool("https://stockcharts.com/c-sc/sc?s=%24NAA200R&p=D&b=5&g=0&id=0&r=162069503175")https://stackoverflow.com/questions/67479039
复制相似问题