首页 > 解决方案 > 如何使用 URLLib.request 循环访问 URL 并下载图像?

问题描述

我当前的程序看起来像这样

import os
import urllib.request


baseUrl = "https://website.com/wp-content/upload/xxx/yyy/zzz-%s.jpg"

for i in range(1,48):
    url = baseUrl % i
    urllib.request.urlretrieve(baseUrl, os.path.basename(url))

很久没写过python了,不过我以前用python2.7的时候用urllib2写的。

它应该替换 URL 中的 %s 并循环 1-48,并将所有图像下载到脚本所在的目录。但是我得到了很多错误。

编辑:这是引发的错误。

Traceback (most recent call last):
  File "download.py", line 9, in <module>
    urllib.request.urlretrieve(url, os.path.basename(url))
  File "C:\Program Files\Python37\lib\urllib\request.py", line 247, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files\Python37\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 531, in open
    response = meth(req, response)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 641, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 569, in error
    return self._call_chain(*args)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 503, in _call_chain
    result = func(*args)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

标签: pythonpython-3.xpython-3.7urllib

解决方案


urllib.request仅在 Python 3 上可用,因此您必须在 Python 3 中运行代码。


推荐阅读