Отправка запроса POST в формы Google в Python - PullRequest
0 голосов
/ 06 декабря 2018

Итак, я создал форму Google, вот ссылка: https://docs.google.com/forms/d/e/1FAIpQLSeI3-jkg0oedRXECibaxbGZiFyOHGYjvNiOXcADBK9Qq__gUg/viewform

Я хочу ответить с Python из Python, я пытался, но он возвращает 400, неправильный запрос.

Этомой код:


import requests
def f():
  url = 'https://docs.google.com/forms/d/e/1FAIpQLSedKV-pzCYZjnp-tAm6Ww9HMoosYPucSL2y9usEIz6yBizbFg/formResponse'
  form_data = {"entry.386860893":"Python","fvv":1,"draftResponse":'[]',"pageHistory":0,"fbzx":-6718008993703688486}
  user_agent = {'Refer':'https://docs.google.com/forms/d/e/1FAIpQLSeI3-jkg0oedRXECibaxbGZiFyOHGYjvNiOXcADBK9Qq__gUg/viewform?fbzx=-6860115379139697000','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
  r = requests.post(url, data=form_data, headers=user_agent)
  print(r)

Спасибо!

1 Ответ

0 голосов
/ 06 декабря 2018

Обновление:

Я был не прав.Ошибка не вызвана отсутствующими или неверными данными вашего сеанса.Пример кода ниже (использование сессии) не обязателен!Я просто изменил URL из вашего примера кода на ссылку из вашего вопроса, и она сработала для меня:

import requests
url = 'https://docs.google.com/forms/d/e/1FAIpQLSeI3-jkg0oedRXECibaxbGZiFyOHGYjvNiOXcADBK9Qq__gUg/formResponse'
form_data = {"entry.386860893":"Python","fvv":1,"draftResponse":'[]',"pageHistory":0,"fbzx":-6718008993703688486}
requests.post(url, data=form_data)  # response [200]

Оригинальный ответ:

Возможно, вам сначала нужно получить токен или что-то еще.Для интерактивного общения с веб-сайтом я бы рекомендовал использовать requests.Session() для взаимодействия с веб-страницей.http://docs.python -requests.org / ru / master / user / advanced / Если я использую ссылку из вашего примера кода, я получаю ошибку неверного запроса, но, используя ссылку из вашего вопроса, это работает:

url1 = 'https://docs.google.com/forms/d/e/1FAIpQLSeI3-jkg0oedRXECibaxbGZiFyOHGYjvNiOXcADBK9Qq__gUg/viewform'
url2 = 'https://docs.google.com/forms/d/e/1FAIpQLSeI3-jkg0oedRXECibaxbGZiFyOHGYjvNiOXcADBK9Qq__gUg/formResponse'
form_data = {"entry.386860893":"Python","fvv":1,"draftResponse":'[]',"pageHistory":0,"fbzx":-6718008993703688486}

s = requests.Session()
s.get(url)
r = s.post(url2, data=form_data)
print(r)
...