Как отправить несколько запросов на получение сайта на Python? - PullRequest
0 голосов
/ 18 мая 2018

Я прохожу стажировку в течение 3 месяцев в лаборатории информатики (LIRIS).Мой руководитель интернатуры просит меня получить некоторые данные на meilleurs-agents.com .Это сайт по недвижимости, и я хотел бы узнать цену квадратного метра для каждого города.Моя программа на Python, и я на самом деле пытаюсь отправить несколько запросов для получения данных.Но это не работает из-за ошибки прокси:

HTTPConnectionPool(host='XXXXXX', port=XXXX): Max retries exceeded with url: "..." (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000000000B304320>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed',)))

Предварительный просмотр моего кода:

headers = requests.utils.default_headers()
headers.update({
    'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'
})  
for city, postal_code in zip(cities, postal_codes):
    url = 'https://www.meilleursagents.com/prix-immobilier/'+city+'-'+postal_code+'/'

    PROXY = {'https' : 'XX.XXX.X.XXX:XXXX'}

    try:
        response = requests.get(url, timeout=10, proxies=PROXY)
    except Exception as e :
        print(e)

Если я удаляю прокси, мой запрос работает, но HTML-код содержитсообщение типа «Вы, кажется, бот, поэтому ваш запрос не был выполнен», поэтому я не могу получить цены ... Но мне действительно нужны эти данные

Надеюсь, что моя проблема ясна и что кто-томожет помочь мне:)

Спасибо, Нелли

PS: Извините за мой английский, я студент французского языка: D

1 Ответ

0 голосов
/ 19 мая 2018

Попробуйте изменить User-Agent заголовок и файлы cookie для ваших запросов.

Другой обходной путь - попробуйте добавить некоторое время ожидания между запросами:

time.sleep(1)  # try to use different time values

Это, конечно, замедлит ваш сценарий,но может помочь избежать ошибок слишком много запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...