日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

selenium学习——问卷星(可控比例)

發布時間:2023/12/14 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 selenium学习——问卷星(可控比例) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問卷星調查達不到想要的要求?這里滿足你

文章目錄

目錄

文章目錄

前言

一、selenium是什么?

二、使用步驟

1.引入庫

2.配置Edge

3.設置參數

4.獲取網頁題目數,選項個數,類型

5.分別寫出單選和多選的選擇方法

6.整合一起運行

三.完整代碼

總結



前言

問卷星在大家生活中使用都是比較多的,但是數據很多都不能得到想要的預期,學習selenium后,對付問卷星也多了一種方法。


一、selenium是什么?

Selenium是一個免費的(開源)自動化測試組件,適用于跨不同瀏覽器和平臺的Web應用程序。Selenium側重于自動化基于Web的應用程序。可以代替人們完成在瀏覽器的操作。

二、使用步驟

1.引入庫

代碼如下:

import random import time from selenium import webdriver

2.配置Edge

代碼如下:

edge_options = {"browserName": "MicrosoftEdge","version": "","platform": "WINDOWS","ms:edgeOptions": {"extensions": [], "args": ["--disable-blink-features=AutomationControlled"] # 去除監測} } web = webdriver.Edge(executable_path=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver.exe",capabilities=edge_options) # 使用瀏覽器驅動

用chrome試過,驗證一直沒通過(不清楚為什么)

3.設置參數

url = 'https://www.wjx.cn/vm/YJ4DaLn.aspx' time_delay = 10 # 每次延時單位秒 times = 10 # 次數 """datas里面為權重""" datas = [[5, 3, 1, 1], # 1[5, 3, 1, 1, 1], # 2[1, 2, 3, 4], # 3[1, 1, 3, 4, 4], # 4[1, 1, 3, 4, 4], # 5[1, 1, 3, 4, 5], # 6[1, 1, 3, 4, 5], # 7[1, 2, 3, 2, 1], # 8[1, 1, 3, 5, 3], # 9[5, 5, 5, 5, 5, 1], # 10[5, 2, 5, 1, 2, 1], # 11[3, 5, 5, 5, 1], # 12[5, 5, 1, 3, 1], # 13]

分別是網址,延時為你人工驗證,點確認的時。我暫時沒時間,同時也有可能沒能力寫機器驗證,如果有朋友看到,也可以改正交流。次數和選項的權重,可以較好的控制想要控制的比例。

4.獲取網頁題目數,選項個數,類型

def begin():global mn = 1 # n為當前題目序號fat = web.find_elements_by_xpath('/html/body/div[2]/form/div[6]/div[4]/fieldset/*') # 題目數for i in fat: # 每個題目數循環一次m = len(web.find_elements_by_xpath('/html/body/div[2]/form/div[6]/div[4]/fieldset/div[' +str(n) + ']/div[2]/*')) # 獲取選項數,賦值給mques_type = i.get_attribute('type') # 判斷題目類型if ques_type == '3': # 單選dan(n, datas[n - 1])elif ques_type == '4': # 多選,選3個duo(n, 3, datas[n - 1])else:pass # 其他的不選n += 1web.find_element_by_xpath('/html/body/div[2]/form/div[6]/div[8]/div[3]/div/div/div').click() time.sleep(1)web.find_element_by_xpath('/html/body/div[6]/div[2]/div[2]/button').click()time.sleep(1)web.find_element_by_xpath('/html/body/div[2]/form/div[6]/div[8]/div[2]/div/div/div/div[1]/div[2]').click()

5.分別寫出單選和多選的選擇方法

def dan(n, data): # n為序號,date為比例"""單選隨機選""""""m為選項個數"""global mlists = random.choices(range(1, m + 1), weights=data, k=1)web.find_element_by_xpath('/html/body/div[2]/form/div[6]/div[4]/fieldset/div[' +str(n) + ']/div[2]/div[' + str(lists[0]) + ']').click()def duo(n, num, data): # n為序號,num為要選項個數,data為比例"""多選隨機選""""""m為選項個數"""global mlists = random.choices(range(1, m + 1), weights=data, k=num)for i in range(num):web.find_element_by_xpath('/html/body/div[2]/form/div[6]/div[4]/fieldset/div[' + str(n) + ']/div[2]/div[' +str(lists[i]) + ']').click()

我這里有點問題,就是多選的沒有排除已經選好過的,比如就會導致設置多選選3個,只選擇了一種的情況。

6.整合一起運行

if __name__ == '__main__':m = 0for i in range(times):web.get(url)begin()time.sleep(time_delay)

循環次數times,每次延時time_delay秒

三.完整代碼

import random import time from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChainsedge_options = {"browserName": "MicrosoftEdge","version": "","platform": "WINDOWS","ms:edgeOptions": {"extensions": [], "args": ["--disable-blink-features=AutomationControlled"] # 去除監測} } web = webdriver.Edge(executable_path=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver.exe",capabilities=edge_options) # 使用瀏覽器驅動def dan(n, data): # n為序號,date為比例"""單選隨機選""""""m為選項個數"""global mlists = random.choices(range(1, m + 1), weights=data, k=1)web.find_element_by_xpath('/html/body/div[1]/form/div[6]/div[4]/fieldset/div[' +str(n) + ']/div[2]/div[' + str(lists[0]) + ']').click()def duo(n, num, data): # n為序號,num為要選項個數,data為比例"""多選隨機選""""""m為選項個數"""global mlists = random.choices(range(1, m + 1), weights=data, k=num)for i in range(num):web.find_element_by_xpath('/html/body/div[1]/form/div[6]/div[4]/fieldset/div[' + str(n) + ']/div[2]/div[' +str(lists[i]) + ']').click()def pai(n, data):"""排序題"""ms = web.find_elements_by_xpath('/html/body/div[1]/form/div[6]/div[4]/fieldset/div[19]/ul/*')pai_list = [x for x in range(1, len(ms) + 1)]pai_data = dataprint(pai_data)for i in range(len(ms)):j = random.choices(range(len(pai_list)), weights=pai_data, k=1)web.find_element_by_xpath('/html/body/div[1]/form/div[6]/div[4]/fieldset/div[' + str(n) + ']/ul/li[' +str(pai_list[j[0]]) + ']').click()pai_list.pop(j[0])pai_data.pop(j[0])def begin():global mn = 1 # n為當前題目序號fat = web.find_elements_by_xpath('/html/body/div[1]/form/div[6]/div[4]/fieldset/*') # 題目數for i in fat: # 每個題目數循環一次m = len(web.find_elements_by_xpath('/html/body/div[1]/form/div[6]/div[4]/fieldset/div[' +str(n) + ']/div[2]/*')) # 獲取選項數,賦值給mques_type = i.get_attribute('type') # 判斷題目類型if ques_type == '3': # 單選dan(n, datas[n - 1])elif ques_type == '4': # 多選,選3個duo(n, 3, datas[n - 1])elif ques_type == '11': # 排序題pai(n, datas[n - 1])else:pass # 其他的不選n += 1web.find_element_by_xpath('/html/body/div[1]/form/div[6]/div[8]/div[3]/div/div/div').click()time.sleep(2)try:web.find_element_by_xpath('/html/body/div[5]/div[2]/div[2]/button').click()time.sleep(1)web.find_element_by_xpath('/html/body/div[1]/form/div[6]/div[8]/div[2]/div/div/div/div[1]/div[2]').click()time.sleep(4)button = web.find_element_by_xpath('/html/body/div[1]/form/div[6]/div[8]/div[2]/div/div/div/div[3]/div[1]/div/div[1]/span')ActionChains(web).drag_and_drop_by_offset(button, 300, 0).perform()except:passif __name__ == '__main__':m = 0url = 'https://www.wjx.cn/vm/Q9vKRNT.aspx'time_delay = 5 # 每次延時單位秒times = 27 # 次數"""datas里面為權重"""for i in range(times):datas = [[3, 2], # 1[2, 2, 3, 1], # 2[0, 1, 5, 2, 2], # 3[8, 2, 3, 1], # 4[5, 5, 3, 1, 2], # 5[5, 1, 1, 1, 1], # 6[5, 2, 0, 1], # 7[0, 1, 5, 4], # 8[0, 4, 3], # 9[1, 5, 2, 1], # 10[3, 3, 1, 1], # 11[4, 1, 2], # 12[0, 4, 2, 2], # 13[1, 2, 4, 1], # 4[2, 4, 3, 1], # 5[6, 1, 1], # 6[2, 4, 4, 3], # 7[6, 4, 2, 1], # 8[4, 3, 2, 3], # 9[2, 4, 3, 2], # 10[0, 1, 1, 1], # 11[2, 2, 1, 1, 1], # 12[0, 1, 4, 3, 4, 3] # 13]web.get(url)begin()time.sleep(time_delay)

總結

本次在問卷星上需要部分調查數據,但是時間緊迫,沒有時間做詳細的調查了,只能通過這種方法得到數據

總結

以上是生活随笔為你收集整理的selenium学习——问卷星(可控比例)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。