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