请求协助实现Google Forms自动化虚拟数据填充
自动化填充Google Forms生成虚拟调研数据方案
方法一:Python + Requests(无浏览器,高效批量提交)
步骤1:获取表单提交接口与参数
打开你的Google Forms页面,按F12进入开发者工具,手动填写一次测试数据并提交。在Network标签中找到提交的POST请求,复制其完整URL(格式通常为https://docs.google.com/forms/d/e/XXX/formResponse),同时查看请求的Form Data,每个表单问题对应一个entry.XXX格式的参数键,比如选择题的选项值、文本框的输入内容。
步骤2:准备依赖与虚拟数据生成
安装所需Python库:
pip install requests faker
利用faker生成模拟真实用户的虚拟数据,结合随机选择逻辑匹配表单问题类型:
- 选择题:从预设选项列表随机选取
- 文本框:生成姓名、邮箱、地址等真实格式的模拟内容
- 数字类问题:生成符合范围的随机数值
步骤3:编写批量提交脚本
import requests from faker import Faker import random # 初始化中文虚拟数据生成器 fake = Faker("zh_CN") # 替换为你的表单提交URL FORM_SUBMIT_URL = "https://docs.google.com/forms/d/e/XXX/formResponse" def generate_form_data(): # 替换为实际表单的entry参数与对应生成逻辑 return { "entry.123456": random.choice(["学生", "上班族", "自由职业者"]), "entry.789012": fake.name(), "entry.345678": fake.email(), "entry.901234": str(random.randint(18, 60)), # 其他表单问题依次添加对应参数 } def batch_submit(count=50): for idx in range(count): form_data = generate_form_data() response = requests.post(FORM_SUBMIT_URL, data=form_data) status = "成功" if response.status_code == 200 else f"失败(状态码:{response.status_code})" print(f"第{idx+1}条数据提交{status}") if __name__ == "__main__": batch_submit()
方法二:Python + Selenium(模拟浏览器,适配复杂表单)
如果表单存在动态验证、下拉选择等复杂交互,用Selenium模拟真实浏览器操作更稳妥:
步骤1:安装依赖与驱动
pip install selenium faker
下载对应浏览器的驱动(如ChromeDriver),确保版本与本地浏览器一致。
步骤2:编写模拟填充脚本
from selenium import webdriver from selenium.webdriver.common.by import By from faker import Faker import random import time fake = Faker("zh_CN") # 替换为你的Google Forms页面链接 FORM_PAGE_URL = "https://docs.google.com/forms/d/e/XXX/viewform" def fill_and_submit(): driver = webdriver.Chrome() driver.get(FORM_PAGE_URL) time.sleep(random.uniform(1, 2)) # 模拟点击选择题选项(替换为实际元素定位) identity_options = driver.find_elements(By.XPATH, "//div[@role='radio']") random.choice(identity_options).click() # 填写文本框(替换为实际元素定位) name_input = driver.find_element(By.XPATH, "//input[@type='text' and @aria-label='姓名']") name_input.send_keys(fake.name()) email_input = driver.find_element(By.XPATH, "//input[@type='email']") email_input.send_keys(fake.email()) # 提交表单 submit_btn = driver.find_element(By.XPATH, "//div[@role='button' and text()='提交']") submit_btn.click() time.sleep(1) driver.quit() # 批量提交 for idx in range(50): fill_and_submit() print(f"第{idx+1}条数据提交完成")
注意事项
- 避免短时间内高频提交,可添加随机延时(
time.sleep(random.uniform(1,3)))防止触发Google反机制 - 确保脚本中的
entry参数或元素定位与表单实际结构完全匹配 - 必填问题必须全部生成对应数据,否则提交会失败
内容的提问来源于stack exchange,提问作者FURQHAN OMER
相关产品推荐
相关产品推荐

