python实现问卷网的自动填写详解

@python 实现问卷自动填写(用于刷数据)

python实现问卷网的自动填写详解

注:为保证问卷结果的真实性和质量,如果不是特殊需要,建议不要使用特殊方法刷数据

环境

  1. 语言 :python;
  2. 浏览器Google Chrome
  3. 问卷来源问卷网

前期准备

1.首先针对谷歌浏览器

在windows下配置chromedriver

具体原因可以参考文章后的链接,这里只是说一下简单的步骤
1.打开谷歌浏览器查看版本
在这里插入图片描述
2.下载对应版本的chromedriver
下载地址
我的版本
在这里插入图片描述
3.解压
这里有两种方法
方法一是解压到python的scripts文件夹下(比较建议,因为我就是用的这种方法)
方法二是解压到任意位置
4.测试
完成以上三个步骤后

#解压方法用法一的测试程序
from selenium import webdriver #没有selenium库的 需要装一个
driver=webdriver.Chrome()
#法二测试程序
from selenium import webdriver #没有selenium库的 需要装一个
driver=webdriver.Chrome(executable_path=r"你的driver路径")

成功后
运行会打开谷歌浏览器并出现在这里插入图片描述

python代码部分

from selenium import webdriver
import random #用于产生随机数
import time	#用于延时
#准备工作
option = webdriver.ChromeOptions()
option.add_argument('headless')
url = 'https://www.wenjuan.com/s/UZBZJvpi6w/' #此处为你要填写的问卷网 问卷的地址
num = 200  # 设置提交问卷次数

 #主要程序
for times in range(num):
#打开网页
    driver = webdriver.Chrome() #此处使用chromedriver解压在python的scripts文件夹下的方法
    driver.get(url)#获取问卷信息 
    questions = driver.find_elements_by_css_selector('.matrix')
    
    #便利每个问题  index为(从0开始) 题目序号 第一题index=0
    for index,answers in enumerate(questions):
 		
        # 所有问卷问题选项
        answer = answers.find_elements_by_css_selector('.icheckbox_div')
        # 填空选项,并填入相关内容
        if not answer:
            blank_potion = answers.find_element_by_css_selector('.blank.option')
            blank_potion.send_keys('无') #此处 “无” 为填写信息
            continue
        #根据问卷的题目规定和预期结果  例如:1,2,4,5,6,7,8 为单选
        # 单选题处理
        if index == 0 or index == 7 :
            choose_ans = answer[random.randint(0, 2)] #在前三个选项中随机选择一个
            choose_ans.click() #相当于点击事件
            time.sleep(random.randint(0, 1)) #随机一个延时 以免操作过快 影响问卷的质量
 		
        elif index==3:
            choose_ans = answer[random.randint(0, 3)]
            choose_ans.click()
            time.sleep(random.randint(0, 1))

        elif index == 5 or index == 6 :
            choose_ans = answer[random.randint(0, 2)]
            choose_ans.click()
            time.sleep(random.randint(0, 1))
 
        elif index == 1 :
            choose_ans = answer[random.randint(0, 3)]
            choose_ans.click()
            time.sleep(random.randint(0, 1))
        elif index == 4 :
            choose_ans = answer[random.randint(0, 2)]
            choose_ans.click()
            time.sleep(random.randint(0, 1))
        
        # 多选题处理
        #四选二模式   该思想可用于互斥项
        elif index ==2:
             choose_ans = answer[random.randint(0, 1)]#前两个里面选一个
             choose_ans.click()
             time.sleep(random.randint(0, 1))
             choose_ans = answer[random.randint(2, 3)]#后两个里选一个 可随机应变
             choose_ans.click()
             time.sleep(random.randint(0, 1))
             
        #随机多选 存在缺陷
        elif index ==9:
            for i in range(1, random.randint(3, 4)): #随机选则两个或三个   或一个!
                choose_ans = answer[random.randint(0, 3)]
                choose_ans.click()
                time.sleep(random.randint(0, 1))
			#分析 当随机选择三个时,有可能三个选项随机数中有两个相同
			#这时相当于点击两次 没有做选则 所以结果只剩一个
			#同理 当随机选则两个时,可能存在不做选择的情况 若为必填题 则不能提交
			
				#改进 仍有不足 不会出现偶数个选择项
        elif index == 8:
            for i in range(1,8):
                choose_ans = answer[random.randint(0, 6)]
                choose_ans.click()
                time.sleep(random.randint(0, 1))
              #同上理 此时选项个数为 1或3或5或7  
 
    subumit_button = driver.find_element_by_css_selector('#next_button') #获取提交按钮
    #每个问卷网的提交按钮的获取不同 该方法为 问卷网 问卷提交按钮获取方法
    subumit_button.click() #点击提交事件
    print('已经为您提交了{}次问卷'.format(int(times) + int(1)))
    time.sleep(4)  # 延迟问卷结果提交时间,以免间隔时间太短而无法提交
    driver.quit()# 退出 关闭网页

总结

本文讲解用python进行对问卷网问卷的自动填写的具体操作步骤

PS:

问卷星有智能识别比较麻烦
chromedriver的配置有问题的话,这里提供一个参考链接
链接

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值