You need to enable JavaScript to run this app. 如何修改BeautifulSoup代码下载NASA APOD站点高分辨率图片
优惠活动
大模型
产品
解决方案
定价
更多

如何修改BeautifulSoup代码下载NASA APOD站点高分辨率图片

代码调整方案

核心逻辑说明

APOD页面的低分辨率缩略图存储在<img>标签的src属性中,高分辨率原图的相对路径存放在包裹该<img>标签的上层<a>标签的href属性内,只需提取该href属性拼接根路径即可获取高清资源。
同时原代码存在两个可优化的兼容问题:

  • urllib2是Python2专属库,Python3环境下已停止维护,可统一用requests完成所有请求逻辑
  • 图片属于二进制文件,原代码用文本写入模式w会导致文件损坏,需要改为二进制写入模式wb

修改后完整代码

from bs4 import BeautifulSoup as BSHTML
import requests

# 请求目标页面
page = requests.get('https://apod.nasa.gov/apod/astropix.html')
soup = BSHTML(page.content, features="html.parser")

# 定位img标签的父级a标签,提取高清图相对路径
img_tag = soup.find('img')
high_res_rel_path = img_tag.parent['href']
high_res_url = 'https://apod.nasa.gov/apod/' + high_res_rel_path

# 下载并保存高清图
r = requests.get(high_res_url, allow_redirects=True)
with open('/home/me/Downloads/apod.jpg', "wb") as f:
    f.write(r.content)

关键改动点

  • 替换原urllib2请求逻辑,统一用requests库完成页面和图片的请求,适配Python3运行环境
  • 不再直接取<img>的src属性,改为取其父级<a>标签的href属性拼接高清图地址
  • 修正文件写入模式为二进制wb,避免图片文件损坏

内容的提问来源于stack exchange,提问作者user1551817

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 21:06:06