用python下载图像

Posted

技术标签:

【中文标题】用python下载图像【英文标题】:download an image with python 【发布时间】:2021-10-23 07:59:25 【问题描述】:

你好我想下载这个link的图片, 但我无法打开创建的图像。这是输出文件 我该如何解决这个问题? 这是代码:

from requests.models import Response
import requests

url = 'https://beta.mangaeden.com/it/it-manga/jojo-no-kimyou-na-bouken---jojorion/1/1'
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')
immagine = soup.find(id='mainImg')
src = str(immagine.get('src'))
link_immagine = "https:"+src
print(link_immagine)
'''download imagege'''
response = requests.get(link_immagine)
f = open("C:\\Users\\chris\\Desktop\\image.jpg", "wb")
f.write(response.content)
f.close()
print('download successfull')

【问题讨论】:

请看这个:***.com/a/8286449/11754210 这能回答你的问题吗? How to download image using requests 这不是下载图片的问题,而是图片访问的问题。发出请求时有 403 响应。 【参考方案1】:

根据您的用户代理,该网站似乎返回 403 Forbidden 错误。如果您使用浏览器的用户代理请求图像,它应该可以工作,例如:

response = requests.get(link_immagine, headers=
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0 Safari/537.36'
)

【讨论】:

【参考方案2】:

下载此图像时的问题实际上是获取请求,因为响应返回图像链接是403,但如果您在标题中设置User-Agent,它会解决问题,然后您会得到200你可以保存图像。

from requests.models import Response
import requests
from bs4 import BeautifulSoup

url = 'https://beta.mangaeden.com/it/it-manga/jojo-no-kimyou-na-bouken---jojorion/1/1'
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')
immagine = soup.find(id='mainImg')
src = str(immagine.get('src'))
link_image = "https:"+src
print(link_image)
'''download link_image'''
headers = 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Safari/605.1.15'
response = requests.get(link_image,headers=headers)

if response.status_code == 200:
    with open("download.jpg", 'wb') as f:
        f.write(response.content)
else:
  print("NOT FOUND")

您之前保存的图像只是 403 Forbidden 的响应,并不是实际的图像数据。

【讨论】:

以上是关于用python下载图像的主要内容,如果未能解决你的问题,请参考以下文章

python Python - 下载图像

Python下载图像文件夹

100个Python实战项目Python 并发图像下载器

使用python(自定义网址)下载bing图像搜索结果

如何使用Selenium和Python下载图像

Python 3.7 - 下载图像 - Urllib.request.urlretrieve 错误