最近写了个自动填写调查的问卷的简单爬虫

简介: 某调查问卷,一共17题,每题5选项,第一项总是最好的评价,这样省的我判定哪一项是最好的了。问卷的最后是填写投票人的个人信息。代码from selenium import webdriverimport timeimport xlrdbrowser = webdriver.

某调查问卷,一共17题,每题5选项,第一项总是最好的评价,这样省的我判定哪一项是最好的了。问卷的最后是填写投票人的个人信息。

代码

from selenium import webdriver
import time
import xlrd

browser = webdriver.Firefox(executable_path=r'geckodriver')
browser.implicitly_wait(10)

def _choose():
    browser.get("网址") 
    for i in range(1,18): #选择每一题的第一个选项(最好的评价)
        browser.find_element_by_id("Q%d_rbt1"%i).click()

def _rdinfo(num):
        #从文件的第二行开始读取,目前没有加入读取完就删除。列表中好像有个方法叫读取后删除
    name = sheet.cell(num,0).value
    phone = sheet.cell(num,1).value
    return name,phone

def _wtinfo(name,phone):
    email = phone+'@189.cn'
    browser.find_element_by_id("userName").send_keys(name)
    browser.find_element_by_id("phone").send_keys(phone)
    browser.find_element_by_id("email").send_keys(email)
    time.sleep(8) #给我手动输入验证码的时间
    browser.find_element_by_id("SubmitBtn").click()

if __name__ == '__main__':  
    _choose() 
    data = xlrd.open_workbook('文件路径')
    sheet = data.sheets()[0]
    num = 1
    for i in range(1,13):
        name,phone = _rdinfo(num) #返回值赋值给两个变量
        _wtinfo(name,phone)
        num += 1
        time.sleep(5)  #每个投票间隔5s,然而事实证明一个IP只能投3个
        _choose()
        print ('第%d个投票'%num)
    print ('完成!')

不足之处

三级标题

  • 问卷的最后是个人信息,我采用遍历Excel内容的方式。中建执行过程 中断了两次,这样我就不知道遍历到哪里了,只能看print的信息。后面仔细想想应该采用list读取后删除的方法。等中断的时候再把剩余的list写入到文件。
list.pop(obj=list[-1])     #移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
  • selenium提供的xpath查找方法非常方便,可是一定要注意是否在同一个frame或者window。我因为这个而选不到元素费了半天劲。

  • 程序并没有完全自动化,提交问卷之前有个验证码,需要我手动输入。因此如果能加个识别验证码的包就好了,GitHub上 好像一大堆。需要学习。

目录
相关文章
|
消息中间件 Kafka 程序员
kafka的Docker镜像使用说明(wurstmeister/kafka)
wurstmeister/kafka是镜像市场上很受欢迎的一个kafka镜像,今天来聊聊它的多种用法
6759 0
kafka的Docker镜像使用说明(wurstmeister/kafka)
|
Kubernetes 应用服务中间件 nginx
基于容器化的Web服务器管理
【8月更文第28天】随着云原生技术的发展,容器化已经成为部署和管理应用程序的标准方式之一。Docker 和 Kubernetes 等工具提供了强大的容器管理和编排能力,使得开发者能够轻松地部署、扩展和维护 Web 服务器。本文将详细介绍如何使用 Docker 和 Kubernetes 实现 Web 服务器的容器化部署,并提供详细的步骤和代码示例。
504 1
|
自然语言处理 监控 关系型数据库
MySQL模糊匹配技巧:无需ES的高效实现
在数据库应用中,模糊匹配是一个常见的需求,尤其是在不引入Elasticsearch(ES)等外部搜索引擎的情况下。MySQL作为强大的关系型数据库,提供了多种实现模糊匹配的方法。本文将分享如何在MySQL中实现模糊匹配,并提供五大步骤和十个实战案例,帮助你提升查询效率和性能。
1354 1
|
供应链 监控 算法
ERP系统中的库存优化与成本控制解析
【7月更文挑战第25天】 ERP系统中的库存优化与成本控制解析
1306 2
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
2298 1
|
存储 安全 数据安全/隐私保护
穿越编程之海:探索谷歌Protocol Buffers库在C++中的应用
穿越编程之海:探索谷歌Protocol Buffers库在C++中的应用
821 0
|
机器学习/深度学习 API Python
阿里云DSW实例wandb使用示例
wandb是一个免费的,用于记录实验数据的工具。wandb相比于tensorboard之类的工具,有更加丰富的用户管理,团队管理功能,更加方便团队协作。本文主要演示如何在阿里云DSW实例中使用wandb。
1688 1
|
关系型数据库 MySQL Shell
4.5 sqlmap注入获取webshell及系统权限研究
4.5 sqlmap注入获取webshell及系统权限研究
1242 0
|
存储 缓存 运维
Linux限制磁盘与内存配额【超详细】
Linux限制磁盘与内存配额方法
901 0