Python實現問卷星自動填寫和選擇

Python實現問卷星自動填寫和選擇

啊哈哈哈,我朋友叫我幫他填寫問卷星,,我就直接寫了個python腳本幫他一次性解決
全隨機,全自動,一開始我用的是BP直接抓包發送,不過發送頻率過快會讓你驗證,,,
就很噁心,,問卷上一共有十五個問題,其實十四個,有個選擇不同會顯示不同問題
在書寫過程中遇見一個問題,多選框的選中,經歷多種摧殘,終於找到解決辦法:

randomId1 = random.randint(1, 7)
js = "document.getElementById(\"q11_" + str(randomId1) + "\").checked = true"
browser.execute_script(js)
js = "document.getElementById(\"q11_" + str(randomId1) + "\").click()"
browser.execute_script(js)

如上所述即可實現python選中複選框!!!
具體代碼如下,沒有任何技術可言,僅此記錄一下:

from selenium import webdriver
import time
import random

def run():
    browser = webdriver.Chrome()
    browser.get("https://www.wjx.cn/jq/80378706.aspx")

    # 1
    randomId = random.randint(1, 2)
    js = "document.getElementById(\"q1_" + str(randomId) + "\").click()"
    browser.execute_script(js)
    time.sleep(1)

    # 2
    randomId = random.randint(1, 4)
    js = "document.getElementById(\"q2_" + str(randomId) + "\").click()"
    browser.execute_script(js)
    time.sleep(1)

    # 3
    block = ["商學院", "計科院", "電氣院"]
    randomId = random.randint(0, 2)
    browser.find_element_by_id("q3").send_keys(block[randomId])
    time.sleep(1)

    # 4
    block = ["會計", "網工", "電氣"]
    browser.find_element_by_id("q4").send_keys(block[randomId])
    time.sleep(1)

    # 5
    randomId = random.randint(1, 5)
    for i in range(1, randomId + 1):
        randomId1 = random.randint(1, 5)
        js = "document.getElementById(\"q5_" + str(randomId1) + "\").checked = true"
        browser.execute_script(js)
        js = "document.getElementById(\"q5_" + str(randomId1) + "\").click()"
        browser.execute_script(js)
    time.sleep(1)

    # 6
    randomId = random.randint(1, 3)
    for i in range(1, randomId + 1):
        randomId1 = random.randint(1, 3)
        js = "document.getElementById(\"q6_" + str(randomId1) + "\").checked = true"
        browser.execute_script(js)
        js = "document.getElementById(\"q6_" + str(randomId1) + "\").click()"
        browser.execute_script(js)
    time.sleep(1)

    # 7
    randomId = random.randint(1, 3)
    for i in range(1, randomId + 1):
        randomId1 = random.randint(1, 3)
        js = "document.getElementById(\"q7_" + str(randomId1) + "\").checked = true"
        browser.execute_script(js)
        js = "document.getElementById(\"q7_" + str(randomId1) + "\").click()"
        browser.execute_script(js)
    time.sleep(1)

    # 8
    randomId = random.randint(1, 2)
    js = "document.getElementById(\"q8_" + str(randomId) + "\").click()"
    browser.execute_script(js)
    time.sleep(1)

    # 9
    randomId = random.randint(1, 2)
    js = "document.getElementById(\"q9_" + str(randomId) + "\").click()"
    browser.execute_script(js)
    time.sleep(1)

    # 10
    randomId = random.randint(1, 3)
    js = "document.getElementById(\"q10_" + str(randomId) + "\").click()"
    browser.execute_script(js)
    time.sleep(1)

    # 12
    if randomId == 2:
        randomId2 = random.randint(1, 6)
        for i in range(1, randomId2 + 1):
            randomId1 = random.randint(1, 6)
            js = "document.getElementById(\"q12_" + str(randomId1) + "\").checked = true"
            browser.execute_script(js)
            js = "document.getElementById(\"q12_" + str(randomId1) + "\").click()"
            browser.execute_script(js)
        time.sleep(1)
    # 11
    else:
        randomId2 = random.randint(1, 7)
        for i in range(1, randomId2 + 1):
            randomId1 = random.randint(1, 7)
            js = "document.getElementById(\"q11_" + str(randomId1) + "\").checked = true"
            browser.execute_script(js)
            js = "document.getElementById(\"q11_" + str(randomId1) + "\").click()"
            browser.execute_script(js)
        time.sleep(1)

    # 13
    randomId = random.randint(1, 3)
    js = "document.getElementById(\"q13_" + str(randomId) + "\").click()"
    browser.execute_script(js)
    time.sleep(1)

    # 14
    block = ["線上教學太生硬", "線上教學不太好", "沒有不足之處,挺好的"]
    randomId = random.randint(0, 2)
    browser.find_element_by_id("q14").send_keys(block[randomId])
    time.sleep(1)

    # 15
    block = ["希望作業能多一點", "如果可以,希望老師能講課講清楚一些", "建議取消線上考試"]
    randomId = random.randint(0, 2)
    browser.find_element_by_id("q15").send_keys(block[randomId])
    time.sleep(1)

    # submit
    js = "document.getElementById(\"submit_button\").click()"
    browser.execute_script(js)

    browser.quit()	#運行完畢自動關閉瀏覽器

if __name__ == "__main__":
    while True:
        run()
        time.sleep(10)	#避免提交過快出現驗證

理論上還是不錯的!!大概30s就能填完一個,比一個一個叫人填快多了嘛

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章