Python запросов возвращает 200 вместо 301 - PullRequest
1 голос
/ 17 апреля 2020

url = "https://www.avito.ma/fr/2_mars/sacs_et_accessoires/Ch%C3%A2les_en_Vrai_Soie_Chanel_avec_boite_38445885.htm"

try   
    r = requests.get(url,headers={'User-Agent': ua.random},timeout=timeout) # execute a timed website request
    if r.status_code > 299: # check for bad status
        r.raise_for_status() # if confirmed raise bad status
    else:
        print(r.status_code, url) # otherwise print status code and url
except Exception as e:
     print('\nThe following exception: {0}, \nhas been found found on the following post: "{1}".\n'.format(e,url))

Ожидаемый статус = 301 Постоянно перемещено

Вы можете посетить страницу или проверить http://www.redirect-checker.org/index.php с URL-адресом для правильной печати терминала.

Возвращенный статус = 200 OK

Страница была перемещена, и она должна вернуться выше 301 Moved Permanently, однако он возвращает 200. Я прочитал запросы, которые делают c и проверил все параметры (allow_redirects = False et c.), но я не думаю, что это ошибка конфигурации.

Я озадачен, почему запросы не видят перенаправления.

Есть идеи?

Заранее спасибо.

1 Ответ

2 голосов
/ 17 апреля 2020

Python Модуль запросов имеет параметр allow_redirect в True по умолчанию. Я протестировал его с помощью False, и он дает код 301, который вы ищете.

enter image description here

Примечание после прочтения вашего комментария выше: r. история сохраняет каждый код_ответа перед тем, который вы сейчас используете, который сохраняется в r.status_code (только если вы оставите параметр в True).

...