Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试刮取图像时出错_Python_Python 3.x_Urllib - Fatal编程技术网

Python 尝试刮取图像时出错

Python 尝试刮取图像时出错,python,python-3.x,urllib,Python,Python 3.x,Urllib,我正在尝试使用Python 3通过存储在.txt文件中的URL下载图像,在某些网站上尝试下载时出现错误。这是我得到的错误: File "C:/Scripts/ImageScraper/ImageScraper.py", line 14, in <module> dl() File "C:/Scripts/ImageScraper/ImageScraper.py", line 10, in dl urlretrieve(URL, IMAGE) File "C:\Python3

我正在尝试使用Python 3通过存储在.txt文件中的URL下载图像,在某些网站上尝试下载时出现错误。这是我得到的错误:

 File "C:/Scripts/ImageScraper/ImageScraper.py", line 14, in <module>
 dl()
 File "C:/Scripts/ImageScraper/ImageScraper.py", line 10, in dl
 urlretrieve(URL, IMAGE)
 File "C:\Python34\lib\urllib\request.py", line 186, in urlretrieve
 with contextlib.closing(urlopen(url, data)) as fp:
 File "C:\Python34\lib\urllib\request.py", line 161, in urlopen
 return opener.open(url, data, timeout)
 File "C:\Python34\lib\urllib\request.py", line 469, in open
 response = meth(req, response)
 File "C:\Python34\lib\urllib\request.py", line 579, in http_response
 'http', request, response, code, msg, hdrs)
 File "C:\Python34\lib\urllib\request.py", line 507, in error
 return self._call_chain(*args)
 File "C:\Python34\lib\urllib\request.py", line 441, in _call_chain
 result = func(*args)
 File "C:\Python34\lib\urllib\request.py", line 587, in http_error_default
 raise HTTPError(req.full_url, code, msg, hdrs, fp)
 urllib.error.HTTPError: HTTP Error 403: Forbidden

我认为这是因为他们不允许“机器人”访问他们的网站,但通过一些研究,我发现有一种解决方法,至少在使用urlopen时是这样,但我无法在使用urlretrieve时将解决方法应用到我的代码中。有可能让它工作吗?

我认为这是一个实际的HTTP错误:403,表示禁止访问该URL。您可能希望在访问URL之前尝试打印该URL,并尝试通过浏览器访问该URL。您还应该得到一个禁止的错误(403)。了解更多信息,特别是一些评论-我相信您正在使用python 3。我更新了描述,这样说(和标签)。此外,还更新了使用
打开文件的更正确方法。
from urllib.request import urlretrieve

def dl():
    with open('links.txt', 'r') as input_file:
        for line in input_file:
            URL = line
            IMAGE = URL.rsplit('/',1)[1]
            urlretrieve(URL, IMAGE)


if __name__ == '__main__':
    dl()