为什么我还可以继续使用python自动填问卷星?

摘要:
1.由于问卷明星系统的升级,不再可能使用硒自动填写问卷。附件(硒源代码):来自硒importwebdriver来自硒。webdriver。常见的keyimportKeysimporttimeimportrandomdefrun():#1问卷填写日期驱动程序。按id('q1')查找元素。单击()d

1.由于问卷星系统的升级,利用selenium已经无法实现自动填写问卷.

为什么我还可以继续使用python自动填问卷星?第1张

为什么我还可以继续使用python自动填问卷星?第2张

附(selenium源码):

from selenium importwebdriver
from selenium.webdriver.common.keys importKeys
importtime
importrandom
defrun():
    #1 问卷填报日期
    driver.find_element_by_id('q1').click()
    driver.switch_to.frame('__calendarIframe')
    time.sleep(1)
    driver.find_element_by_id('selectTodayButton').click()
    driver.switch_to.default_content()
    #2 体温测量日期
    driver.find_element_by_id('q2').click()
    driver.switch_to.frame('__calendarIframe')
    time.sleep(1)
    driver.find_element_by_id('selectTodayButton').click()
    driver.switch_to.default_content()
    #3 班级
    js = "document.getElementById("q3_1").click()"driver.execute_script(js)
    #4 学号
    driver.find_element_by_id('q4').send_keys("20183769")
    #5 姓名
    driver.find_element_by_id('q5').send_keys("赵常恒")
    #6 性别
    js="document.getElementById("q6_1").click()"driver.execute_script(js)
    #7 所在地区
    driver.find_element_by_xpath('//*[@id="divquestion7"]/ul/li[2]/a').click()
    #8 核酸
    driver.find_element_by_xpath('//*[@id="divquestion8"]/ul/li[1]/a').click()
    driver.find_element_by_xpath('//*[@id="divquestion8"]/ul/li[1]/input[2]').send_keys("1月7日阴性")
    #9 隔离情况
    js="document.getElementById("q9_2").click()"driver.execute_script(js)
    #10 密切接触
    js = "document.getElementById("q10_2").click()"driver.execute_script(js)
    #12 病例
    js = "document.getElementById("q12_2").click()"driver.execute_script(js)
    time.sleep(1)
    #14 体温
    num=random.randint(0,6)
    driver.find_element_by_id('q14').send_keys("36."+str(num)+"/"+"36."+str(num))
    time.sleep(1)
    #15 同住人员密切接触
    js = "document.getElementById("q15_2").click()"driver.execute_script(js)
    time.sleep(1)
    #17 同住人员病例
    js = "document.getElementById("q17_2").click()"driver.execute_script(js)
    time.sleep(1)
    #19 地理位置
    driver.find_element_by_id('q19').click()
    time.sleep(5)
    driver.switch_to.frame("PDF_i_chezchenz")
    time.sleep(1)
    #1
    driver.find_element_by_id('txtInput').send_keys('河北省邢台市广宗县牛家寨村')
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="divauto"]/ul/li[1]').click()
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="divCurLoc"]/a').click()
    driver.switch_to.default_content()
    time.sleep(1)
    #2
    #driver.find_element_by_xpath('//*[@id="mapcontainer"]/div[3]/div/div').click()
    #time.sleep(1)
    #driver.find_element_by_xpath('//*[@id="divCurLoc"]/a').click()
    #driver.switch_to.default_content()
    #20 居住地变化
    js="document.getElementById("q20_2").click()"driver.execute_script(js)
    time.sleep(1)
    #22 异常情况
    driver.find_element_by_id('q22').send_keys('')
    time.sleep(1)
    #23 同住人员
    driver.find_element_by_id('select2-q23-container').click()
    driver.find_element_by_xpath('/html/body/span/span/span[1]/input').send_keys('0')
    driver.find_element_by_xpath('/html/body/span/span/span[1]/input').send_keys(Keys.ENTER)
    time.sleep(10)
    #提交

if __name__ == '__main__':
    driver =webdriver.Chrome()
    driver.get("***")
    run()
    #提交
selenium源码

2.利用pyppeteer实现自动填写问卷操作

附(pyppeteer源码):

importasyncio
from pyppeteer importlaunch
from pyppeteer_stealth import stealth #反爬
importrandom
importtime
async defrun():
    driver =await launch({
        #谷歌浏览器的安装路径
        'executablePath': 'C:Program FilesGoogleChromeApplicationchrome.exe',
        #Pyppeteer 默认使用的是无头浏览器
        'headless': False,
        #设置Windows-size和Viewport大小来实现网页完整显示
        'args': ['--no-sandbox', '--window-size=1024,768']
    })
    page =await driver.newPage()
    await page.setViewport({'width': 1024, 'height': 768})
    #反爬虫跳入网页
await stealth(page)
    await page.goto('***')
    time.sleep(1)
    #1 问卷填报日期
    date=await page.querySelector('#q1')
    await date.click()
    frame =page.frames
    date2= await frame[1].querySelector('#selectTodayButton')
    await date2.click()
    #2 体温测量日期
    date = await page.querySelector('#q2')
    await date.click()
    frame =page.frames
    date2 = await frame[1].querySelector('#selectTodayButton')
    await date2.click()
    #3 班级
    await page.click('#divquestion3 > ul > li > a')
    #4 学号
    await page.type('#q4','20183769')
    #5 姓名
    await page.type('#q5','赵常恒')
    #6 性别
    await page.click('#divquestion6 > ul:nth-child(2) > li:nth-child(1) > a')
    #7 所在地区
    await page.click('#divquestion7 > ul > li:nth-child(2) > a')
    #8 核酸
    await page.click('#divquestion8 > ul > li:nth-child(1) > a')
    await page.type('#divquestion8 > ul > li:nth-child(1) > input.underline','第一次1月7日阴性,第二次1月11日阴性')
    #9 隔离情况
    await page.click('#divquestion9 > ul > li:nth-child(2) > a')
    #10 密切接触
    await page.click('#divquestion10 > ul:nth-child(2) > li:nth-child(2) > a')
    #12 病例
    await page.click('#divquestion12 > ul:nth-child(2) > li:nth-child(2) > a')
    #14 体温
    temperature="36."+str(random.randint(2,6))+'/'+"36."+str(random.randint(2,6))
    print(temperature)
    await page.type('#q14',temperature)
    #15 同住人员密切接触
    await page.click('#divquestion15 > ul:nth-child(2) > li:nth-child(2) > a')
    #17 同住人员病例
    await page.click('#divquestion17 > ul:nth-child(2) > li:nth-child(2) > a')
    #19 地理位置
    address= await page.querySelector('#q19')
    await address.click()
    time.sleep(5)
    frame=page.frames
    await frame[2].type('#txtInput','河北省邢台市广宗县牛家寨村')
    time.sleep(1)
    await frame[2].click('#btnSearch')
    time.sleep(1)
    await frame[2].click('#divauto > ul > li:nth-child(1) > div')
    time.sleep(1)
    await frame[2].click('.ensure_btn')
    #20 居住地变化
    await page.click('#divquestion20 > ul:nth-child(2) > li:nth-child(2) > a')
    #22 异常情况
    await page.type('#q22','')
    #23 同住人员
    await page.click('#select2-q23-container')
    persion=await page.xpath('/html/body/span/span/span[2]/ul/li[2]')
    await persion[0].click()
    time.sleep(2)
    #提交
    await page.click('#submit_button')
if __name__ == '__main__':
    asyncio.get_event_loop().run_until_complete(run())
pyppeteer源码

免责声明:文章转载自《为什么我还可以继续使用python自动填问卷星?》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何制作中文Javadoc包,并导入到EclipseBindingFlags说明下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jQuery Mobile 列表视图(带有自动检索)

输入a: 输入b: jQuery Mobile 列表视图 jQuery Mobile 中的列表视图是标准的 HTML 列表:有序列表 (<ol>) 和无序列表 (<ul>)。 如需创建列表,请向 <ol> 或 <ul> 元素添加 data-role="listview"。如需使这些项目可点击,请在每个列...

使用Python自动填写问卷星(pyppeteer反爬虫版)

写此文的目的是为了方便寒假自己忘记填问卷星 一开始的想法和去年一样,去年就写过一版,想着今年不过就是改改数据,换换id而已,另外没想到的事情发生了。。。 满怀信心的写完代码 from selenium import webdriver import time import random def run(): browser = webdriver...

使用zTree插件构建树形菜单

zTree下载:https://github.com/zTree/zTree_v3 目录: 就我看来,zTree较为实用的有以下几点: zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。 支持 JSON 数据 支持静态 和 Ajax 异步加载节点数据 支持任意更换皮肤 / 自...

利用CSS实现带相同间隔地无缝滚动动画

说明:因为在移动上主要利用CSS来做动画,所以没有考虑其他浏览器的兼容性,只有-webkit这个前缀,如果需要其他浏览器,请自行补齐。 首先解释一下什么是无缝滚动动画, 例如下面的例子 See the Pen css实现上下循环滚动效果 by lilyH (@lilyH) on CodePen. ------------------------------...

js中滑动门的实现方法和案例

很多小伙伴想做滑动门的时候没有思路,今天就分享一个案例: 下面这个div需要做滑动门效果 <div class="cont"> <ul> <li name="ulli" class="active">按钮1</li> <li na...

Ztree _ 横向显示子节点、点击文字勾选、去除指定元素input的勾选状态

前些天项目需要树结构表现数据,需求ztree就能满足所以直接使用ztree只是踩了些小坑。。。 1.ztree子节点横向显示(下图): 效果说明:第三级子节点按需求横向显示其他竖向显示,每行最多显示5个(修改位置在zTreeStyle.css里面哦,在外面设置不上的,页面也获取不到想要设置样式的节点。。。如果你能还望赐教)代码如下: 1 .ztree&g...