selenium自动填写QQ问卷

使用selenium来自动填写问卷

这份问卷是为了完成一份作业制作的,因为回收的效果不理想,所有使用selenium来简单的填写一下。因为此问卷的形式本身就很简单,所以实现自动填写也比较简单。
因为在此问卷中并没有反爬机制,故不需要对反爬处理。

问卷的结构

在这里插入图片描述

问题的结构

在这里插入图片描述
可以看到问题的结构都是统一的,这样可以直接获取所有的问题,然后使用selenium来控制点击。

程序设计

1,因为为了防止后续的统计中所有选项的比重都相同。所以对问题选项的选择上做一个简单的处理。

#预期结果(问卷填写对这些答案的比重增加)
experesult={'0':0,'1':1,'2':0,'3':1,'6':0,'7':1,'9':1,'10':1,'11':1,'12':1,'13':1,'14':0,'15':0,'16':0,'17':0
            ,'18':0,'19':0,'20':0,'21':1}
def select(k,i,t):
    '''
                    随机选择答案,并提高给定答案的比重.每3次就一定会选中一次
    ''' 
    #如果i在需要特殊处理的字典中
    if str(i) in experesult.keys():
        if k%3==0:
            return experesult[str(i)]
    else:
        chic=random.randint(0,t)
        return chic

2,打开网页
3,获取需要填写的题目
lisbody=browser.find_elements_by_class_name(“question-body”)
4,获取“提交”按键
submit=browser.find_element_by_class_name("btn-submit ")
5,开始循环所有需要填写的题目
5.1,获取一个题目中的所有选项。
listemp=lisbody[i].find_elements_by_class_name(“checkbox-option”)
5.2,获取具体选则哪一项。并点击
ch=select(k, i, len(listemp)-1)
listemp[ch].click()
6,提交,关闭网页。

完整代码

#coding=gbk
#coding:utf-8
'''
Created on 2020年7月29日

@author: dingyiyi
'''
from selenium import webdriver
from time import sleep
import random
#预期结果(问卷填写对这些答案的比重增加)
experesult={'0':0,'1':1,'2':0,'3':1,'6':0,'7':1,'9':1,'10':1,'11':1,'12':1,'13':1,'14':0,'15':0,'16':0,'17':0
            ,'18':0,'19':0,'20':0,'21':1}
def select(k,i,t):
    '''
                    随机选择答案,并提高给定答案的比重
    ''' 
    if str(i) in experesult.keys():
        if k%1==0:
            #选则给定的选项
            return experesult[str(i)]
    else:
        #随机选则一个
        chic=random.randint(0,t)
        return chic
    
 #循环10次。(填写10遍)  
for k in range(0,10):
    #加载谷歌浏览器
    browser=webdriver.Chrome()
    #加载页面
    browser.get('https://wj.qq.com/s2/6803633/26da/')
    #获取选项
    lisbody=browser.find_elements_by_class_name("question-body")
    #获取提交按键
    submit=browser.find_element_by_class_name("btn-submit ")
    #填写问卷
    for i in range(0,22):
        #获取选项            
        listemp=lisbody[i].find_elements_by_class_name("checkbox-option")
        #随机选中一个选项
        ch=select(k, i, len(listemp)-1)
        #点击
        listemp[ch].click()
    #提交    
    submit.click()
    print("第"+str(k+1)+"次自动填写完成") 
    #关闭
    browser.close()
    #等待1秒,进行下一次填写
    sleep(1)
    
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丁拾陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值