2015-06-01 2 views
2

Я пытаюсь загрузить изображения через URL-адреса, хранящиеся в TXT-файле, используя Python 3, и я получаю сообщение об ошибке при попытке сделать это на некоторых сайтах. Это ошибка, которую я получаю:Ошибка при попытке очистить изображения

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 

, используя этот код:

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() 

Я принимаю его потому, что они не позволяют «ботами», чтобы получить доступ к их веб-сайт, но с некоторых исследований я узнал, что есть способ вокруг, по крайней мере при использовании urlopen, но я не могу применить обходной путь к моему коду, когда я использую urlretrieve. Можно ли заставить это работать?

+0

Несколько комментариев - я считаю, что вы используете python 3. Я обновил описание, чтобы сказать это (и теги). Кроме того, обновлен более правильный способ открытия файла с помощью 'with'. – gabhijit

ответ

1

Я думаю, что ошибка является фактической ошибкой HTTP: 403, говоря, что доступ запрещен к этому URL-адресу. Возможно, вы захотите попробовать распечатать URL-адрес до его доступа и попытаться получить доступ к URL-адресу через ваш браузер. Вы также должны получить запрещенную ошибку (403). Узнайте больше о http_status_codes и, в частности, 403 forbidden

Смежные вопросы