亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python自動填寫問卷星問卷以及提交問卷等功能

 更新時間:2023年03月28日 09:24:01   作者:double@AI  
這篇文章主要給大家介紹了關(guān)于python自動填寫問卷星問卷以及提交問卷等功能的相關(guān)資料,包括使用Selenium庫模擬瀏覽器操作、定位元素、填寫表單等,通過本文的學(xué)習(xí),讀者可以了解如何利用Python自動化技術(shù)提高問卷填寫效率,需要的朋友可以參考下

前言:

問卷是很好的網(wǎng)絡(luò)調(diào)查方式之一,近年來,問卷星被廣泛應(yīng)用于各方面的調(diào)查。本文介紹了利用python代碼自動填寫問卷星基本題目,擁有自動填寫、解決智能驗證、批量提交問卷等功能。

1.下載瀏覽器驅(qū)動

python自動化填寫問卷需要依賴瀏覽器驅(qū)動,這里使用的是谷歌瀏覽器,所以需要下載chromedriver,且下載的版本要和瀏覽器版本一致。

首先打開谷歌瀏覽器,點擊“幫助”——“關(guān)于Google Chrome”,查看瀏覽器版本。如圖:

 查看完版本后打開鏈接:CNPM Binaries Mirror下載對應(yīng)系統(tǒng)對應(yīng)版本的谷歌瀏覽器驅(qū)動。如圖:

下載完成后會得到chromedriver.exe文件,此時將其復(fù)制到python工程目錄文件夾中的venv文件夾中的Scripts文件夾下,如圖:

2. selenium基本配置

selenium本質(zhì)是通過驅(qū)動瀏覽器,完全模擬瀏覽器的操作,就像真正的用戶在操作一樣。這個工具的主要功能包括:測試與瀏覽器的兼容性——測試你的應(yīng)用程序看是否能夠很好得工作在不同瀏覽器和操作系統(tǒng)之上。測試系統(tǒng)功能——創(chuàng)建回歸測試檢驗軟件功能和用戶需求。selenium庫可以通過終端命令pip install selenium安裝。

 導(dǎo)入相關(guān)的包

import random          # 用于產(chǎn)生隨機(jī)數(shù)
import time            # 用于延時
from selenium.webdriver.common.by import By      #導(dǎo)入By包進(jìn)行元素定位
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

實例化一個啟動參數(shù)對象

#實例化一個啟動參數(shù)對象
chrome_options = Options()
 
#添加啟動參數(shù)
chrome_options.add_argument(
    'user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"')  # 添加請求頭
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
 
# 防止被識別
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])     #設(shè)置開發(fā)者模式啟動
 

其他設(shè)置 

chrome_options.add_experimental_option('useAutomationExtension', False)    # 關(guān)閉selenium對chrome driver的自動控制
 
chrome_options.maximize_window()      # 網(wǎng)頁最大化
 
#chrome_options.add_argument('headless')    #設(shè)置瀏覽器以無界面方式運(yùn)行

設(shè)置驅(qū)動程序

browser = webdriver.Chrome(options=chrome_options)     #設(shè)置驅(qū)動程序,啟動瀏覽器  (實現(xiàn)以特定參數(shù)啟動)
browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',
                        {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})       #用來執(zhí)行Chrome開發(fā)這個工具命令

3.答題代碼

定義一個run方法,并往方法里面添加內(nèi)容。

獲取問卷內(nèi)容

browser.get('https://www.***.**/**/*****.aspx')        # 獲取問卷信息(此處填問卷鏈接)

單選題

    # 問題1的點擊 (性別)
    randomId = random.randint(1, 2)       # 隨機(jī)點擊第一個選項或第二個選項
    
    #js實現(xiàn)方式
    js = "document.getElementById(\"q1_" + str(randomId) + "\").checked = true"
    browser.execute_script(js)         #使用js實現(xiàn)點擊的效果(調(diào)用js方法,同時執(zhí)行javascript腳本)
    js = "document.getElementById(\"q1_" + str(randomId) + "\").click()"
    browser.execute_script(js)         #使用js實現(xiàn)點擊的效果(調(diào)用js方法,同時執(zhí)行javascript腳本)
 
    # 延時 太快會被檢測是腳本
    time.sleep(1)
 
 
    # 問題2    (年齡)
    randomId = random.randint(2, 4)   # 隨機(jī)數(shù),5個多選框 隨機(jī)點擊
    # js實現(xiàn)方式
    js = "document.getElementById(\"q2_" + str(randomId) + "\").checked = true"
    browser.execute_script(js)
    js = "document.getElementById(\"q2_" + str(randomId) + "\").click()"    # 拼接字符串的方式 js找到對應(yīng)id 點擊按鈕
    browser.execute_script(js)
    # 延時
    time.sleep(0.1)

多選題

    # 問題5    
    randomId = random.randint(1, 3)       # 隨機(jī)數(shù)選擇(選多少個)
    
    for i in range(1, randomId + 1):       # 循環(huán) 實現(xiàn)多選效果
        randomId1 = random.randint(1, 6)   #隨機(jī)選擇第1到第6個選項之一
        
        # 兩種js實現(xiàn)方式
        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)

填空題

 
    # 問題25
    
    #自定義要填的內(nèi)容
    block = ["定義第1個填空","定義第2個填空","定義第3個填空","定義第4個填空","定義第5個填空","定義第6個填空","無"]  
    
    #在上述內(nèi)容中隨機(jī)選擇一個填入
    randomId = random.randint(0, 5)          #(數(shù)值下標(biāo)從0開始)
 
    #在題目中隨機(jī)輸入上述內(nèi)容
    browser.find_element_by_id("q25").send_keys(block[randomId])    
    
    # 延時
    time.sleep(0.1)

4.提交+智能驗證

首先查看問卷源代碼,并復(fù)制“提交”按鈕的xpath,如圖:

    #點擊提交
    submit = browser.find_element_by_xpath("http://*[@id='ctlNext']")    #網(wǎng)頁源代碼的xpath
    submit.click()      #點擊
    
    #延時 太快會被檢測是腳本
    time.sleep(0.5)
    # 模擬點擊智能驗證按鈕
    # 先點確認(rèn)
    browser.find_element(By.XPATH,"http://button[text()='確認(rèn)']").click()
    time.sleep(1)
    # 再點智能驗證提示框,進(jìn)行智能驗證
    browser.find_element_by_xpath("http://div[@id='captcha']").click()

5.主函數(shù)

if __name__ == "__main__":
    #批量提交問卷
    for i in range(10):          #運(yùn)行一次提交10份問卷
         run()
         time.sleep(5)  # 避免提交過快 會出現(xiàn)驗證

以上代碼親測有效,當(dāng)短時間內(nèi)刷的問卷數(shù)過多時,可能會出現(xiàn)第二重智能驗證,這就要手動驗證了哦,所以為了防止出現(xiàn)二重智能驗證,在每提交完一份問卷后,要用time.sleep函數(shù)用于延時 , 避免提交過快。

總結(jié)

到此這篇關(guān)于python自動填寫問卷星問卷以及提交問卷等功能的文章就介紹到這了,更多相關(guān)python自動填寫問卷星問卷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • tensorflow TFRecords文件的生成和讀取的方法

    tensorflow TFRecords文件的生成和讀取的方法

    本篇文章主要介紹了tensorflow TFRecords文件的生成和讀取的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 基于python實現(xiàn)坦克大戰(zhàn)游戲

    基于python實現(xiàn)坦克大戰(zhàn)游戲

    這篇文章主要為大家詳細(xì)介紹了基于python實現(xiàn)坦克大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 使用python制作一個截圖小工具

    使用python制作一個截圖小工具

    這篇文章主要討論了我們?nèi)绾问褂肞ython編程語言進(jìn)行截圖,我們看到了如何使用pyautogui 模塊與save() 函數(shù)和其他模塊,如NumPy 和OpenCV ,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • python列表[list]和元組(tuple)詳情

    python列表[list]和元組(tuple)詳情

    這篇文章主要介紹了python列表[list]和元組(tuple)詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • python實現(xiàn)高效的遺傳算法

    python實現(xiàn)高效的遺傳算法

    這篇文章主要介紹了python實現(xiàn)高效的遺傳算法。想了解算法的同學(xué),可以參考下
    2021-04-04
  • python Flask框架之HTTP請求詳解

    python Flask框架之HTTP請求詳解

    Flask是一個使用 Python 編寫的輕量級 Web 應(yīng)用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎則使用 Jinja2 。Flask使用 BSD 授權(quán),本篇我們來了解Flask框架中的HTTP請求
    2022-07-07
  • Python3中urllib庫添加請求頭的兩種方式

    Python3中urllib庫添加請求頭的兩種方式

    Python?3中的urllib模塊可以用來處理URL,包括下載和上傳文件、創(chuàng)建和讀取cookie、訪問Web?API等,本文給大家介紹Python3中urllib庫添加請求頭的兩種方式,感興趣的朋友一起看看吧
    2023-10-10
  • pyspark自定義UDAF函數(shù)調(diào)用報錯問題解決

    pyspark自定義UDAF函數(shù)調(diào)用報錯問題解決

    這篇文章主要為大家介紹了pyspark自定義UDAF函數(shù)調(diào)用報錯問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Pandas數(shù)據(jù)查詢的集中實現(xiàn)方法

    Pandas數(shù)據(jù)查詢的集中實現(xiàn)方法

    本文主要介紹了Pandas數(shù)據(jù)查詢的集中實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python中偏函數(shù)partial用法實例分析

    python中偏函數(shù)partial用法實例分析

    這篇文章主要介紹了python中偏函數(shù)partial用法,實例分析了偏函數(shù)partial的功能、定義及使用方法,需要的朋友可以參考下
    2015-07-07

最新評論