Ошибка HTTP 409: конфликт urllib2 с python

Я хотел бы перебрать список запросов URL-адресов API с разными переменными? Get (x1, ...., xn).

from urllib2 import urlopen, Request
import pandas as pd

var=[x[0],...,x[n]]
url_list=['http://BLAH/get?var[0]&fmt=csv','http://BLAH/get?var[1]&fmt=csv',...      ...,'http://BLAH/get?var[n]&fmt=csv']

j=0
while j < len(url_list):
    req=Request(url_list[j])
    response=urlopen(req)
    df=pd.read_csv(response)
    print df
    j=j+1**

Я попытался выполнить команду del req и response.close(), но мой код по-прежнему выдает ошибку конфликта.

 File "C:\Users\Anaconda\lib\urllib2.py", line 127, in urlopen
  return _opener.open(url, data, timeout)
 File "C:\Users\Anaconda\lib\urllib2.py", line 410, in open
  response = meth(req, response)
 File "C:\Users\Anaconda\lib\urllib2.py", line 523, in http_response
  'http', request, response, code, msg, hdrs)
 File "C:\Users\nfitzsimons\Anaconda\lib\urllib2.py", line 448, in error
   return self._call_chain(*args)
 File "C:\Users\Anaconda\lib\urllib2.py", line 382, in _call_chain
   result = func(*args)
 File "C:\Users\Anaconda\lib\urllib2.py", line 531, in http_error_default
   raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
    rllib2.HTTPError: HTTP Error 409: Conflict

У кого-нибудь есть предложения?


person Nikki101    schedule 29.07.2015    source источник


Ответы (1)


Если вы просто пытаетесь перебрать список URL-адресов и распечатать содержимое после успешного запроса, почему бы не попробовать это?

#!/usr/bin/env python

try:
    import requests
except ImportError as err:
    print("Woops, you're missing " + str(err))


urls = []

req = requests

for url in urls:
   response =  req.get(url)
   if response.status_code == 200: #Successful request
       print(response.content)
person Community    schedule 29.07.2015
comment
Спасибо... Этот метод тоже работает, :D Но проблема не в этом. Мне пришлось добавить функцию time.sleep(), потому что я пытался получить доступ к слишком большому количеству данных одновременно! - person Nikki101; 30.07.2015
comment
Хорошо знать! Примечание, которое может повлиять на вас в будущем. Некоторые сайты (Reddit) выдают ошибку 409, если вы слишком часто сканируете или заходите на их сайт без уникального пользовательского агента. Посмотрите на указание пользовательских агентов, если это произойдет с вами! - person ; 30.07.2015