Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法)

这篇具有很好参考价值的文章主要介绍了Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🧑‍💻作者名称:DaenCode
🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。
😎人生感悟:尝尽人生百味,方知世间冷暖。
📖所属专栏:Python实用教程


Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法),Python实用教程,python,selenium,开发语言,pip


🌟效果预览

Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法),Python实用教程,python,selenium,开发语言,pip

🌟环境准备

selenium、payautogui安装

Selenium:用于自动化web应用程序测试。它提供了一组API和库,使开发人员能够以编程方式控制浏览器并执行各种操作,如模拟用户的点击、输入文本、获取元素属性、处理JavaScript弹窗等。Selenium最初是为浏览器自动化测试而设计的,但在实际应用中,它也可以用于数据挖掘、网页抓取和自动化任务等其他方面。
PyAutoGUI:用于自动化鼠标和键盘操作的Python库。它提供了一组功能丰富的API,可以模拟用户在屏幕上的鼠标移动、点击、滚动以及键盘按键的操作。PyAutoGUI可以帮助开发人员实现各种自动化任务,如自动化测试、屏幕录制、图像识别等。

pip install selenium
pip install pyautogui

WebDriver谷歌浏览器驱动安装

驱动下载地址:webdriver
注意找到本地浏览器对应的版本
Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法),Python实用教程,python,selenium,开发语言,pip


🌟具体代码

以下代码是单元题、矩阵多选题的代码,包含具体的代码注释。如果想修改成适用于个人问卷的代码,可参照定位元素方法的章节

# 引入相关模块
from selenium.webdriver.common.by import By
from selenium import webdriver
#随机数产生
import random 
#延时
import time
# 模拟人手,进行页面滚动
import pyautogui
####方法:题干————》选项####
#滚动方法,scroPx为滚动距离
def scrop(driver,scroPx):
  #滚动脚本
  js = "var q=document.documentElement.scrollTop=" + str(scroPx)
  #脚本执行
  driver.execute_script(js)
  #延时
  time.sleep(1)
  
#单选题
def single(driver):
  #页面中有10个单选题
  for j in range(1,11):
    #每个单选题所在的位置
    sinPro = driver.find_elements_by_css_selector(f'#div{j} > div.ui-controlgroup.column1')
    #每个单选题的答案进行遍历
    for answer in sinPro:
      #对应每个单选题的选项组合
      ansItem= answer.find_elements_by_css_selector('.ui-radio') 
      #随机点击选项
      random.choice(ansItem).click()
      #答题时间间隔
      time.sleep(random.randint(0,1))
#矩阵选择题,一个题
def juzhen(driver):
    #矩阵行数
    for i in range(1,6):
        #矩阵列数,
        index = random.randint(2, 6)
        #对应的每一个选项
        dan = driver.find_element_by_xpath(f"//tr[@id='drv8_{i}']/td[{index}]/a")
        #选择
        dan.click()
        time.sleep(random.randint(0, 1))
#脚本执行方法
def launch(nums):
    for i in range(0, nums):
        # 初始配置,问卷星地址
        url_survey = 'https://www.wjx.cn/vm/wY1vxPu.aspx'
        option = webdriver.ChromeOptions()
        option.add_experimental_option('excludeSwitches', ['enable-automation'])
        option.add_experimental_option('useAutomationExtension', False)
        # 本地下载的谷歌浏览器地址
        option.binary_location = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
        # 下载好的Chrome驱动的地址
        driver = webdriver.Chrome(r"D:\chromedriver_win32\chromedriver.exe", options=option)
        driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',
                               {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})
        # 启动要填写的地址
        driver.get(url_survey)
        #调用单选题方法
        single(driver)
        time.sleep(random.randint(0, 1))
        #涉及到多个矩阵题执行方法
        for k in range(4):
            method_name = f'juzhen{k}'
            method = globals()[method_name]
            method(driver)
        #调用滚动屏幕方法
        scrop(driver, 600) 
        #提交按钮
        driver.find_element_by_css_selector('#ctlNext').click()  # 找到提交的css并点击
        time.sleep(4)
        print('已经提交了{}次问卷'.format(int(i) + int(1)))
        time.sleep(4)
        driver.quit()#停止
  if __name__ == "__main__":
    #填写问卷次数
    launch(5)

🌟Selenium常用API

方法 描述
find_element_by_id('element_id') 通过元素的id属性查找元素
find_element_by_name('element_name') 通过元素的name属性查找元素
find_element_by_class_name('class') 通过元素的class属性查找元素
find_element_by_tag_name('tag') 通过元素的标签名查找元素
find_element_by_link_text('text') 通过链接文本查找超链接元素
find_element_by_partial_link_text('text') 通过部分链接文本查找超链接元素
find_element_by_xpath('xpath_expression') 通过XPath表达式查找元素
find_element_by_css_selector('css_selector') 通过CSS选择器查找元素
click() 点击元素
send_keys('text') 向元素发送文本内容
clear() 清空元素的内容
get('url') 打开指定的URL
current_url 获取当前页面的URL
title 获取当前页面的标题
back() 返回上一个浏览的页面
forward() 前进到下一个浏览的页面
refresh() 刷新当前页面
switch_to.frame('frame') 切换到指定的iframe
switch_to.default_content() 切换到默认的frame
switch_to.alert 处理 JavaScript 弹窗
execute_script('script') 在当前页面执行 JavaScript 代码

🌟如何定位元素

打开开发者工具,找到选项位置的具体代码,之后右击鼠标进行元素定位,点击copy复制到自己代码中即可。
Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法),Python实用教程,python,selenium,开发语言,pip


🌟写在最后

最后感谢大家对本文的阅读,如有不足之处还望在评论区指点或者补充,感激不尽。


Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法),Python实用教程,python,selenium,开发语言,pip文章来源地址https://www.toymoban.com/news/detail-582756.html

到了这里,关于Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python使用Selenium自动实现表单填写之龙年纪念币预约

    声明 :本文只做技术交流,不可用代码为商业用途,文末有源码下载,已测试可用。 Part 1 配置文件改写(源码 有详细的注释说明 读取配置文件,自己组数据库,录入信息 配置文件 Part 2 主函数 每一期的xpath路径都不一样 所以需要提前去网站获取 新的 Xpath 具体方法如下

    2024年02月01日
    浏览(52)
  • Python使用Selenium自动实现表单填写之龙年纪念币预约(附源码,源码有注释解析,已测试可用

    声明 :本文只做技术交流,不可用代码为商业用途,文末有源码下载,已测试可用。 Part 1 配置文件改写(源码 有详细的注释说明 读取配置文件,自己组数据库,录入信息 配置文件 Part 2 主函数 每一期的xpath路径都不一样 所以需要提前去网站获取 新的 Xpath 具体方法如下

    2024年02月01日
    浏览(24)
  • Temper monkey(油猴)实现问卷星填写

    // ==UserScript== // @name         问卷星3.0 // @namespace    http://tampermonkey.net/ // @version      0.1 // @description  try to take over the world! // @author       YYdny // @match        https://www.wjx.cn/vm/* // @icon         https://www.google.com/s2/favicons?sz=64domain=csdn.net // @grant        none // ==/UserScript== (

    2024年02月04日
    浏览(24)
  • Python 自动获取大批量excel数据并填写到网页表单(pandas;selenium)

    自动获取大批量excel数据并填写到网页表单 部分网页获取下拉列表点击的方式有所差异 这个请根据网页源码自做选择 一定要学会使用IPDB调试工具 太好用了!!!! 可能需要pip update一下 看提示 很好解决 没有报错最好啦 Python真是太好用了 办公利器啊!!!!

    2024年02月12日
    浏览(40)
  • Selenium自动填写验证码(偏小白版本OCR)

    我直接 上代码 主要难点就是安装Tesseract-OCR了,去GItHub上搜一搜,去搜索引擎上搜一搜就能下载到了  然后就是使用tesseract_cmd 指定你的tesseract.exe的位置 Tesseract就是一个别人开发好的用来识别验证码的工具,下载好之后是为了给Python调用的 而pytesseract这个库就是为了调用Te

    2024年04月16日
    浏览(27)
  • Word 插件实现读取excel自动填写

    日常工作中碰到需要将EXCEL的对应数据记录填写到word文档对应的位置,人工操作的方式是: 打开exel表—查找对应报告号的行—逐列复制excel表列单元格内容到WORD对应的位置(如下图标注所示) 这种方法耗时且容易出错。实际上如果使用VBA开发WORD插件,编写代替人手操作的自

    2024年02月16日
    浏览(26)
  • 个人git笔记,持续学习并补充填写

    该文章仅仅是为了方便个人日常观看,有些地方没有做详细介绍 git init 创建本地仓库(最好先创建一个目录,在该目录下输入指令创建git仓库),创建完成后该目录下会存在一个.git文件 仓库配置 配置时可以加上--global选项,加上后设置的具有全局属性,该机器下的所有仓库

    2024年02月11日
    浏览(32)
  • Python 使用selenium 实现大麦网自动购票

    前言 大麦网是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域 今天,我们要用代码来实现他的购票过程 知识点: 面向对象编程 selenium 操作浏览器 pickle 保存和读取Cookie实现免登陆 time 做延时操作 os 创建文件,判断文件是否存在 开发环

    2023年04月11日
    浏览(28)
  • Python调用selenium库实现自动化

    以下是一个使用Python实现简单自动化的示例代码,该代码使用selenium库来自动化执行Google搜索并返回搜索结果的标题和URL  简单注释: 导入 selenium 库和 selenium.webdriver.common.keys 模块。 创建一个 WebDriver 对象,指定使用Chrome浏览器。 使用 driver.get() 方法访问Google搜索页面。 使用

    2023年04月11日
    浏览(70)
  • SpringBoot整合Freemaker结合Vue实现页面填写一键自动生成Redis的配置文件

    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:SpringBoot实战 标题 一文带你学会使用SpringBoot+Avue实现短信通知功能(含重要文件代码) 一张思维导图带你学会Springboot创

    2024年02月10日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包