selenium学习——问卷星(可控比例)
生活随笔
收集整理的這篇文章主要介紹了
selenium学习——问卷星(可控比例)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問卷星調查達不到想要的要求?這里滿足你
文章目錄
目錄
文章目錄
前言
一、selenium是什么?
二、使用步驟
1.引入庫
2.配置Edge
3.設置參數
4.獲取網頁題目數,選項個數,類型
5.分別寫出單選和多選的選擇方法
6.整合一起運行
三.完整代碼
總結
前言
問卷星在大家生活中使用都是比較多的,但是數據很多都不能得到想要的預期,學習selenium后,對付問卷星也多了一種方法。
一、selenium是什么?
Selenium是一個免費的(開源)自動化測試組件,適用于跨不同瀏覽器和平臺的Web應用程序。Selenium側重于自動化基于Web的應用程序??梢源嫒藗兺瓿稍跒g覽器的操作。
二、使用步驟
1.引入庫
代碼如下:
import random import time from selenium import webdriver2.配置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学习——问卷星(可控比例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像处理与计算机视觉的区别
- 下一篇: 蚂蚁开放平台开发第三方授权登陆(一):开