Python 3.9.x下载维基百科本地图片失败,求助解决方法
问题解决:维基百科图片无法正确下载的原因及修复方案
你的核心问题是使用了维基百科的页面URL,而非图片的直接资源链接。浏览器地址栏里的https://en.wikipedia.org/wiki/Abacus#/media/File:Abacus_4.jpg是带锚点的页面地址,指向的是维基百科的文章页面(仅定位到图片在页面中的位置),而非图片本身的下载链接——你实际下载的是网页HTML内容,而非图片文件,这就是为什么文件无法打开、大小和手动下载不一致的原因。
修复步骤:
- 获取图片的直接资源链接:在维基百科页面的目标图片上右键,选择「复制图片地址」(不同浏览器选项表述略有差异),你会得到类似
https://upload.wikimedia.org/wikipedia/commons/8/84/Abacus_4.jpg的直接URL(这是该图片的原始资源链接)。 - 修改代码,替换为正确的图片URL:
import urllib.request # 使用图片的直接资源链接 img_url = 'https://upload.wikimedia.org/wikipedia/commons/8/84/Abacus_4.jpg' urllib.request.urlretrieve(img_url, 'test.jpg')
如果担心User-Agent拦截问题,也可以保留User-Agent设置,但核心必须替换为图片的直接URL:
import urllib.request opener = urllib.request.build_opener() opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36')] urllib.request.install_opener(opener) img_url = 'https://upload.wikimedia.org/wikipedia/commons/8/84/Abacus_4.jpg' urllib.request.urlretrieve(img_url, 'test.jpg')
执行以上代码后,下载的文件就是完整的图片,大小和手动下载一致,也能正常用Preview打开。
内容的提问来源于stack exchange,提问作者tikka
相关产品推荐
相关产品推荐

