Python selenium問卷星自動填寫

從問卷星網站找的一個模板

編寫思路大致是這樣
  1. 谷歌瀏覽器驅動器打開問卷網址https://www.wjx.cn/jq/82201411.aspx
  2. xpath定位網頁元素 driver.find_element_by_xpath
  3. 對元素進行操作,有點擊click和填入send_keys
  4. 最後點擊提交問卷//*[@id="submit_button]結束
  5. 若想要多份問卷寫個循環套外面即可
注意事項
  1. 要下載相應版本的Chormedriver放在python文件夾裏做驅動
  2. 填寫問卷時,定位元素只能定位到可視化區域,看不見的需要將瀏覽器向下拉動,
    js="var q=document.documentElement.scrollTop=800" #下拉像素(800是基於最頂端測算的距離) driver.execute_script(js) #執行下拉像素操作
網頁定位元素操作步驟
  1. F12彈框開發者界面,左鍵單擊左上角標誌
    在這裏插入圖片描述
  2. 選擇定位元素,鼠標左鍵單擊
    在這裏插入圖片描述
  3. 右鍵灰色區域
    在這裏插入圖片描述
    Copy->CopyXPath 複製到粘貼板
from selenium import webdriver
import random
import time

def selection(*a): #單選題 輸入參數爲任意個數str(xpath) 返回值爲某一隨機str(xpath)
    n = len(a)
    num = random.randint(1,n)
    for i in range(1,n+1,1):
        if(i==num):
            return a[num-1]

hours = selection('5', '10', '15', '20')
money = str(random.uniform(1500, 2500))
time = selection('一個月','兩個月','三個月','四個月','五個月','六個月','一年','兩年','三年')
month_money = selection('200','500','1000','1500','2000','2500')

def time_write(num):
    for i in range(num):
        driver = webdriver.Chrome()
        driver.get('https://www.wjx.cn/jq/82201411.aspx')
        #第一題
        driver.find_element_by_xpath(selection('//*[@id="divquestion1"]/ul/li[1]/a',
                                               '//*[@id="divquestion1"]/ul/li[2]/a',
                                               '//*[@id="divquestion1"]/ul/li[3]/a',
                                               '//*[@id="divquestion1"]/ul/li[4]/a')).click()

        #第二題
        driver.find_element_by_xpath(selection('//*[@id="divquestion2"]/ul/li[1]/a',
                                               '//*[@id="divquestion2"]/ul/li[2]/a')).click()

        #第三題

        driver.find_element_by_xpath('//*[@id="q3"]').send_keys(money)

        #第四題
        source = selection('父母給予','兼職獲得','獎學金')
        driver.find_element_by_xpath('//*[@id="q4"]').send_keys(source)
        js="var q=document.documentElement.scrollTop=800"    #下拉像素(800是基於最頂端測算的距離)
        driver.execute_script(js)        #執行下拉像素操作

        #第五題
        driver.find_element_by_xpath(selection('//*[@id="divquestion5"]/ul/li[1]/a',
                                               '//*[@id="divquestion5"]/ul/li[2]/a',
                                               '//*[@id="divquestion5"]/ul/li[3]/a',
                                               '//*[@id="divquestion5"]/ul/li[4]/a')).click()

        #第六題

        driver.find_element_by_xpath('//*[@id="q6"]').send_keys(time)

        #第七題

        driver.find_element_by_xpath('//*[@id="q7"]').send_keys(month_money)

        #第八題
        driver.find_element_by_xpath(selection('//*[@id="divquestion8"]/ul/li[1]/a',
                                               '//*[@id="divquestion8"]/ul/li[2]/a',
                                               '//*[@id="divquestion8"]/ul/li[3]/a',
                                               '//*[@id="divquestion8"]/ul/li[4]/a')).click()
        driver.find_element_by_xpath(selection('//*[@id="divquestion8"]/ul/li[5]/a',
                                               '//*[@id="divquestion8"]/ul/li[6]/a',
                                               '//*[@id="divquestion8"]/ul/li[7]/a')).click()

        js="var q=document.documentElement.scrollTop=1600"
        driver.execute_script(js)

        #第九題
        driver.find_element_by_xpath(selection('//*[@id="divquestion9"]/ul/li[2]/a')).click()

        #第十題
        driver.find_element_by_xpath(selection('//*[@id="divquestion10"]/ul/li[1]/a',
                                               '//*[@id="divquestion10"]/ul/li[2]/a',
                                               '//*[@id="divquestion10"]/ul/li[3]/a')).click()

        #第十一題
        driver.find_element_by_xpath(selection('//*[@id="divquestion11"]/ul/li[1]/a',
                                               '//*[@id="divquestion11"]/ul/li[2]/a',
                                               '//*[@id="divquestion11"]/ul/li[3]/a')).click()

        #第十二題
        driver.find_element_by_xpath(selection('//*[@id="divquestion12"]/ul/li[1]/a',
                                               '//*[@id="divquestion12"]/ul/li[2]/a',
                                               '//*[@id="divquestion12"]/ul/li[3]/a')).click()

        js="var q=document.documentElement.scrollTop=2400"
        driver.execute_script(js)

        #第十三題
        driver.find_element_by_xpath(selection('//*[@id="divquestion13"]/ul/li[1]/a',
                                               '//*[@id="divquestion13"]/ul/li[2]/a',
                                               '//*[@id="divquestion13"]/ul/li[3]/a',
                                               '//*[@id="divquestion13"]/ul/li[3]/a')).click()

        #第八題
        driver.find_element_by_xpath(selection('//*[@id="divquestion14"]/ul/li[1]/a',
                                               '//*[@id="divquestion14"]/ul/li[2]/a',
                                               '//*[@id="divquestion14"]/ul/li[3]/a',
                                               '//*[@id="divquestion14"]/ul/li[4]/a')).click()
        driver.find_element_by_xpath(selection('//*[@id="divquestion14"]/ul/li[5]/a',
                                               '//*[@id="divquestion14"]/ul/li[6]/a',
                                               '//*[@id="divquestion14"]/ul/li[7]/a')).click()
        #第十五題
        driver.find_element_by_xpath(selection('//*[@id="divquestion15"]/ul/li[1]/a',
                                               '//*[@id="divquestion15"]/ul/li[2]/a',
                                               '//*[@id="divquestion15"]/ul/li[3]/a')).click()
        js="var q=document.documentElement.scrollTop=3200"
        driver.execute_script(js)

        #第十六題
        driver.find_element_by_xpath('//*[@id="q16"]').send_keys('我愛她')

        #第十七題
        driver.find_element_by_xpath('//*[@id="q17"]').send_keys('165+')

        #第十八題
        driver.find_element_by_xpath('//*[@id="q18"]').send_keys('0')

        #第十九題
        driver.find_element_by_xpath('//*[@id="q19"]').send_keys(hours)

        #第二十題
        driver.find_element_by_xpath(selection('//*[@id="divquestion20"]/ul/li[1]/a',
                                               '//*[@id="divquestion20"]/ul/li[2]/a',
                                               '//*[@id="divquestion20"]/ul/li[3]/a')).click()
        #提交按鈕
        driver.find_element_by_xpath(selection('//*[@id="submit_button"]')).click()
        print('第'+str(i)+'次填寫成功')
        driver.quit()

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