Уведомления

Группа в Telegram: @pythonsu

#1 Май 15, 2020 14:54:55

art7developer
Зарегистрирован: 2020-05-15
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправить post запрос через requests с полями типа name=fiels[id][user]

Всем доброго дня!
Гуру подскажите пожалуйста, как отправить post запрос.
Например:

 <form enctype="multipart/form-data" method="post" id="adinfo-node-form" action="/node/17003/edit?destination=user_mats%3Fpage%3D0">
<input type="hidden" name="field_image[ru][0][fid]" value="0">
</form>
Я в свою очередь спарсил форму и получил name и value

  
date = {
field_image[ru][0][fid]: '0'
}
отправляю:
   
SESSION = requests.Session()
header = {
            'Upgrade-Insecure-Requests': '1',
            'Origin': URL,
            'Referer': link[0],
            'Accept': '*/*',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
            'Cache-Control': 'max-age=0',
            'Connection': 'keep-alive',
            'Content-Type': 'multipart/form-data',
            'Upgrade-Insecure-Requests': '1',
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36 OPR/67.0.3575.137'
        }
html = SESSION.get(URL, params={'page': page})
#спарсил..
date = {
field_image[ru][0][fid]: '0'
}
SESSION.post(link[0], headers=header, data=date )
и форма не обновляется, я так думаю словарь не очень правильно построен(

Как можно получить все данные формы например как js new formData и отправить в нужном формате,
Задача даже не менять данные, просто обновить данные, чтоб поменялась дата объявления!

Отредактировано FishHook (Май 15, 2020 15:14:08)

Офлайн

#2 Май 15, 2020 15:15:44

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Отправить post запрос через requests с полями типа name=fiels[id][user]

Мне думается должно быть как-то так

 date = {
'field_image[ru][0][fid]': '0'
}



Офлайн

#3 Май 15, 2020 15:18:15

art7developer
Зарегистрирован: 2020-05-15
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправить post запрос через requests с полями типа name=fiels[id][user]

Проверил, так и есть

[code python]
dtd = {
'title': 'Скупаем кабеля провода с хранения ,монтажа из неликвидов',
'changed': '1589534958',
'form_build_id': 'form-pZgQlSC9yxktyLVcEeq5b_xj34q6Z-L-nd18sMmslaU',
'form_token': 'BW_vq9p7KwuFZGq_pWmx4fBeKa-HCddKhnB38vYYUIA',
'form_id': 'adinfo_node_form',
'field_cat_adinfo[ru]': '3',
'field_cat_tov[ru][10]': '10',
'files[field_image_ru_0]': '',
'field_image[ru][0][fid]': '0',
'field_image[ru][0][display]': '1',
'field_firm[ru][0][value]': '',
'field_city[ru][0][value]': 'Челябинск',
'field_phone[ru][0][value]': '',
'field_contact[ru][0][value]': '',
'field_email[ru][0][value]': '',
'field_icq[ru][0][value]': '',
'additional_settings__active_tab': '',
'field_textad[ru][0][value]': 'test',
'field_rosregion[und]': '222',
'op': 'Сохранить'
}
[/code]

Офлайн

#4 Май 15, 2020 15:24:03

art7developer
Зарегистрирован: 2020-05-15
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправить post запрос через requests с полями типа name=fiels[id][user]

браузер выдает (network):
title: Скупаем кабеля провода с хранения ,монтажа из неликвидов
changed: 1589484138
form_build_id: form-EOgSk2of8ZhGL9jErsVFXjxeEHCuER0K5VcQ0AGgqWo
form_token: 5bxkagGqx4-7Q3BUJ74LNsUuibs3qZjRuiCznaRAAmg
form_id: adinfo_node_form
field_cat_adinfo: 3
field_cat_tov: 10
files: (binary)
field_image: 0
field_image: 1
field_textad: test
field_firm:
field_city: Челябинск
field_phone:
field_contact:
field_email:
field_icq:
field_rosregion: 222
additional_settings__active_tab:
op: Сохранить

при нажатии на “сохранить”

Отредактировано art7developer (Май 15, 2020 15:24:43)

Офлайн

#5 Май 15, 2020 15:25:54

art7developer
Зарегистрирован: 2020-05-15
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправить post запрос через requests с полями типа name=fiels[id][user]

changed, form_build_id, form_token - парсю динамически

Офлайн

#6 Май 15, 2020 15:27:15

art7developer
Зарегистрирован: 2020-05-15
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправить post запрос через requests с полями типа name=fiels[id][user]

!

Отредактировано art7developer (Май 18, 2020 08:31:04)

Офлайн

#7 Май 15, 2020 16:33:52

art7developer
Зарегистрирован: 2020-05-15
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправить post запрос через requests с полями типа name=fiels[id][user]

Ребятушки, помогите.

Отредактировано art7developer (Май 16, 2020 05:58:14)

Офлайн

#8 Май 16, 2020 02:38:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10031
Репутация: +  857  -
Профиль   Отправить e-mail  

Отправить post запрос через requests с полями типа name=fiels[id][user]

art7developer
Кто подскажет почему не работает?
Не работает что?

art7developer
Отправить post запрос через requests с полями типа
name=fiels[id][user]
Если нужно отправить именно в таком виде
  
data = {
    'name': 'fiels[id][user]'
}
Но я думаю, что ты не понимаешь, что делаешь, поэтому у тебя просто логически ничего не работает. Не потому, что ты питон не знаешь, а потому, что ты даже не понимаешь, что нужно сделать в принципе, и поэтому не можешь это неизвестное записать.



Отредактировано py.user.next (Май 16, 2020 02:42:54)

Офлайн

#9 Май 16, 2020 05:57:43

art7developer
Зарегистрирован: 2020-05-15
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправить post запрос через requests с полями типа name=fiels[id][user]

А как тогда передать value?

Офлайн

#10 Май 16, 2020 06:30:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10031
Репутация: +  857  -
Профиль   Отправить e-mail  

Отправить post запрос через requests с полями типа name=fiels[id][user]

art7developer
А как тогда передать value?
Открой консоль браузера, там вкладка “Сеть”. И вот когда отправляешь форму, там будет показано, как она отправляется, какие поля куда ставятся и какие у них значения. Никаких странностей и запутанностей нет ни в языке разметки HTML, ни в протоколе передачи данных HTTP. Однако если ты не знаешь ни того, ни другого, и даже не понимаешь разницы между HTML и HTTP, и не понимаешь, что это две разные вещи, которые по-разному работают, то, естественно, тебе будет казаться, что с сайтом что-то не то или код на питоне написан неправильно.

В общем, если вкратце, форма HTML - это просто удобный способ сформировать данные для HTTP-запроса. Сама форма никуда ничего не отправляет, даже когда ты на кнопку “Отправить” жмёшь. Код на питоне сразу формирует HTTP-запрос без всякой формы из HTML. Прочитав форму в HTML-коде, можно понять, что там примерно сформируется в итоге для передачи. Но и одной формы из HTML недостаточно, чтобы точно знать, что будет передаваться в запросе, потому что наряду с формой в формировании HTTP-запроса могут участвовать скрипты на JavaScript с той же страницы. Ты можешь нажать на кнопку формы, а какой-то скрипт в странице это отследит и докинет к конечному HTTP-запросу ещё какие-то данные. Это то, почему по одной форме не нужно угадывать, что там будет отправляться фактически.

Поэтому займись HTTP-запросом, отстань от HTML-формы. В конечном счёте HTML-форма скрипту на питоне не нужна вообще.



Отредактировано py.user.next (Май 16, 2020 06:32:15)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version