Зачем использовать сеанс, публиковать данные, содержащие пустой кортеж, код состояния всегда 400 - PullRequest
0 голосов
/ 08 ноября 2018
#-*- coding:utf8 -*-
import requests

if __name__=='__main__':
    session = requests.session()
    params={}
    a=()
    params.update({'id':a})
    httpresult = session.get('http://www.baidu.com/',data=params)
    print httpresult.status_code
    httpresult = session.get('http://www.baidu.com/')
    print httpresult.status_code

Ожидаемый результат 200 200

Фактический результат 200 400

Если я заменю a на str, результат будет правильным.почему ??

1 Ответ

0 голосов
/ 08 ноября 2018

Вы создаете пустой кортеж в качестве переменной a и затем пытаетесь использовать этот пустой кортеж в качестве параметра запроса, который выдаст ошибку.

Сказав это;Я только что запустил ваш код (в python3 с небольшими изменениями), и он возвращает следующее

>>> import requests
>>> 
>>> session = requests.session()
>>> params={}
>>> a=()
>>> params.update({'id':a})
>>> httpresult = session.get('http://www.baidu.com/',data=params)
>>> print(httpresult.status_code)
200
>>> httpresult = session.get('http://www.baidu.com/')
>>> print(httpresult.status_code)
200

Так что нет ошибки 400.

Кроме того, что вы используете неправильные параметры запроса для baidu, естьбез параметра id.

Также возможно, что baidu определяет ваши запросы как бот и блокирует ваши запросы на ограниченное время.

...