python - 在 Python 中向谷歌表单发送 POST 请求
问题描述
所以我创建了一个谷歌表单,这是链接: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)
谢谢!
解决方案
更新:
我错了。该错误不是由会话数据丢失或无效引起的。下面的代码示例(使用会话)不是必需的!我刚刚将您的代码示例中的 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/en/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)
推荐阅读
- angular - 部署和托管 Angular 前端和 Go 后端
- batch-file - 从批处理脚本进行 NuGet 还原
- docker - Docker Splunk 日志记录驱动程序是否支持 indexer ack
- browser - 在 Vaadin 14 应用程序的服务器端通过 Java 获取用户 Web 浏览器的 IP 地址
- flutter - Dart 或 Flutter:我如何获得处理器内核的数量?
- tensorflow2.0 - Tensorflow2.0 MultiWorkerMirroredStrategy 示例挂起
- sql-server - 在删除语句中输出未删除的条目
- python - Python while循环在定义的时间后未终止
- java - 从 Java 发出 HTTP 请求时出现“PKIX 路径构建失败”错误
- node.js - 打字稿重载函数