Найти - Пользователи
Полная версия: Помогите новичку с тонкостями request'a
Начало » Python для новичков » Помогите новичку с тонкостями request'a
1
SkyTiger
Друзья, помогите разобраться!
Палками сильно не бейте - я молодой и зеленый питоновод.

Есть такая задача - при помощи request'a заполнять форму на сайте и отправлять.
И все шло ничего пока не оказалось, что в паре ключ : значение - “ключ” содержит квадратные скобки.
 default[password]: 123
И в итоге мой код выглядит так:
 PASSWORD = '123'
keys_data = dict(default[password]=PASSWOD, ...)
Разумеется ничего не работает - выдает ошибку: SyntaxError: keyword can't be an expression
Пытался экранировать квадратные скобки - тут тоже беда, не смог найти как это делается, точнее нашел - где-то писали, что надо поставить доп. открывающую скобку - не помогло, дублирующие скобки - не помогли, знак “\” - не помог.

Что делать?
JOHN_16
давайте угадаю
 keys_data = {
    'default': {
        'password': PASSWORD,
    },
}
SkyTiger
JOHN_16
давайте угадаю
Не прокатило, не угадали
Название параметра в форме имеет именно такой вид:
 default[password]
Как я понял, именно в таком виде он и должен передаваться, только как это сделать в питоне?
py.user.next
  
>>> d = {'abc[def]': 'ghi'}
>>> d
{'abc[def]': 'ghi'}
>>> d['abc[def]']
'ghi'
>>>
SkyTiger
py.user.next
Простите, не понял
py.user.next
SkyTiger
Простите, не понял
Почитай что-нибудь.

SkyTiger
я молодой и зеленый питоновод
Громко сказано, если не понимаешь даже самые базовые типы питона.

Я думаю, тебе даже это не надо делать (то, что ты пытаешься сделать), потому что ты не понимаешь, что тебе надо передать. Словари обычно в таких вещах не участвуют.
SkyTiger
py.user.next
Громко сказано, если не понимаешь даже самые базовые типы питона.
Простите, я Вас этим обидел? Это так сильно бесит, когда люди не знают элементарных вещей и просят помощи? Интересно, для чего тогда раздел “для новичков тут завели?”
py.user.next
Я думаю, тебе даже это не надо делать
Вы могли бы делать такие предположения, если бы работали со мной и знали почему я это делаю и для чего.
Если я не понятно объясняю, что мне нужно, об этом можно сказать несколько иначе, чем так (грубо, я бы сказал).

Объясняю:
Допустим мне нужен скрипт авотризации на сайте.
Я захожу на этот сайт, жму “F12”, вкалдка “network', и галочку ”Preserve Log“.
Ввожу свои ”Логин“ и ”Пароль“ и жму на кнопочу ”Войти“.
Далее я ищу в колонке ”Method“ - ”Post“, жму, листаю в самый низ и нахожу пункт ”Form Data" и вижу следующее:
 login:123
password:321
Соответственно мой код выглядит так:
 url = 'http://my.largestporncollection.com'
LOGIN = '123'
PASSWORD = '321'
c.get(url)
login_data = dict(login=LOGIN, password=PASSWORD)
c.post(url, data=login_data)
Работает как часы!
Но что делать, если параметры “login” и “password” прописаны так:
 default[login]:132
default[password]:321
py.user.next
SkyTiger
Но что делать, если параметры “login” и “password” прописаны так:
default[login]:132
default[password]:321
  
login_data = {'default[login]': LOGIN, 'default[password]': PASSWORD}

Надеюсь, ты не будешь сейчас спрашивать, где тут dict, потому что dict тут - это вот эти фигурные скобки. И это знает любой новичок, хоть что-то прочитавший.

SkyTiger
Интересно, для чего тогда раздел “для новичков тут завели?”
Так ты не новичок, не дорос до новичка, потому что решил, ничего не читая, написать какую-то программу (хоть и на несколько строк, но всё равно программу). Ты же говоришь “я питоновод”, мы это воспринимаем по-другому, питоновод хотя бы базовые типы, базовые операции знает. И тут ты выдаёшь такую проблему, что не понимаешь, что ключи словаря являются строками обычными.
SkyTiger
py.user.next
login_data = {'default': LOGIN, 'default': PASSWORD}
Вот теперь спасибо! Все работает как надо.
Советы Ваши учту.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB