python - 使用 Python 问题发布到谷歌表单
问题描述
这是我的谷歌表单的网址: https ://docs.google.com/forms/d/e/1FAIpQLSfhLUFVzPk48c-Mdbc1N1ImVAtsZ_8WaQESydWrXOsJvz2rRw/viewform
这是我拥有的 Python 代码:
import requests
url = "https://docs.google.com/forms/d/e/1FAIpQLSfhLUFVzPk48c-Mdbc1N1ImVAtsZ_8WaQESydWrXOsJvz2rRw/formResponse"
s = requests.Session()
datos = {"entry.1155905730":"TRES", "entry.2110183202":"DOS", "fvv":1, 'draftResponse':[],'pageHistory':0}
x = s.post(url, data=datos)
我在我的谷歌表单中得到空的回复,好像所有的答案都是空白的。
我错过了什么?
解决方案
在开始填写之前,您需要发送一个帖子进入表格,这就是您看到您发布的链接的方式:https ://docs.google.com/forms/d/e/1FAIpQLSfhLUFVzPk48c-Mdbc1N1ImVAtsZ_8WaQESydWrXOsJvz2rRw/viewform
尝试使用 DevTools 检查器尝试重现请求和响应,检查“下一步”按钮,在“网络”选项卡中,您可以找到让您进入表单的请求:
如何用python重现它们?一个很酷的网站,用于在 python 代码curl.trillworks中转换 curl 请求
粘贴请求并发送!
In [1]: import requests
...:
...: headers = {
...: 'authority': 'docs.google.com',
...: 'cache-control': 'max-age=0',
...: 'origin': 'https://docs.google.com',
...: 'upgrade-insecure-requests': '1',
...: 'content-type': 'application/x-www-form-urlencoded',
...: 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like
...: Gecko) Chrome/79.0.3945.117 Safari/537.36',
...: 'sec-fetch-user': '?1',
...: 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.
...: 8,application/signed-exchange;v=b3;q=0.9',
...: 'x-chrome-connected': 'id=102279514883169871637,mode=0,enable_account_consistency=false,consist
...: ency_enabled_by_default=false',
...: 'x-client-data': 'CJW2yQEIpbbJAQjEtskBCKmdygEI6qzKAQicrcoBCMuuygEIvbDKAQiOssoBCPe0ygEIl7XKAQiYt
...: coBCOy1ygEI4bbKARirpMoB',
...: 'sec-fetch-site': 'same-origin',
...: 'sec-fetch-mode': 'navigate',
...: }
...:
...: data = {
...: 'fvv': '1',
...: 'draftResponse': '[null,null,"4300515041069574030"]\r\n',
...: 'pageHistory': '0',
...: 'fbzx': '4300515041069574030',
...: 'continue': '1'
...: }
...:
...: response = requests.post('https://docs.google.com/forms/u/0/d/e/1FAIpQLSfhLUFVzPk48c-Mdbc1N1ImVAtsZ
...: _8WaQESydWrXOsJvz2rRw/formResponse', headers=headers, data=data)
...:
In [2]: 'DOS' in response.text # And boom!
Out[2]: True
推荐阅读
- javascript - 为什么他们没有直接在 Redux 教程的 map() 中更改属性?
- azure - 用于 Windows 和 linux 的 Azure VM 中的非操作系统更新修补
- javascript - 我不能用 clearInterval 停止 setInterval
- docker - 带有 zabbix 插件的 Grafana docker 镜像
- javascript - 在 react-redux 应用程序中,什么会在没有此类操作的减速器中使操作调度更新状态
- next.js - 为什么从 CRA 迁移到 Next.js 后 eslint 不起作用?
- python - 我创建了一个登录表单和评分系统我不知道为什么仍然看到错误
- serverless-framework - 吉普错误!堆栈错误:EACCES:权限被拒绝,mkdir '/usr/local/lib/node_modules/serverless/node_modules/snappy/.node-gyp'
- apache-spark - 如何延迟尝试执行 Spark 任务失败的重试
- powershell - 尝试在 Powershell 中将结果导出到 CSV 文件