JAVA、Python、selenium、问卷星自动脚本
項目地址
https://gitee.com/Hardy1/questionnaire-star-script
前期準(zhǔn)備
代碼實現(xiàn)
-
項目中service包中的auto_service是主運行邏輯代碼,其他包中的代碼一般無需更改
-
auto_service中的代碼從注釋”答卷邏輯start“到”答卷邏輯end“是對應(yīng)問卷的答題邏輯處理
其中int 的i1,i2,i3之類的數(shù)據(jù)是為了確定選擇哪個選項
boolean類型的數(shù)據(jù)是為了對多選題中的每個選項進行隨機選取,true為選擇,false為不選擇,當(dāng)多選題所有選項都是false也就是不選擇時,指定選擇一個選項或者隨機選擇一個(防止出現(xiàn)都不選的情況而不符合答題要求),我代碼中指定選擇最后一個選項。
if (b20_1==false && b20_2==false && b20_3==false && b20_4==false && b20_5==false){//選擇第五個選項driver.findElement(By.xpath("//*[@id=\"div20\"]/div[2]/div[5]/span")).click();} -
對于xpath中引用變量的代碼,說明這個地方的變量可以決定具體要選擇的選項(邏輯代碼中的int、Boolean類型的代碼都是隨即出來的,所以腳本跑出來的數(shù)據(jù)具有隨機性,無法應(yīng)用于真正的數(shù)據(jù)分析中。)
-
tools包中的seleniumAPI類中,需要自定義chrome driver的本地路徑,建議直接放在C盤根目錄下,就不用動我的默認(rèn)位置了。不過也可以自定義,我默認(rèn)的驅(qū)動路徑是C:/chromedriver.exe(注意,每個系統(tǒng)中的路徑分隔符不同,在java中應(yīng)當(dāng)寫作:C:\\chromedriver.exe)
項目配置
打開”問卷星自動腳本“項目,設(shè)置好maven、jdk等配置
打開mitmproxy安裝路徑,在…/mitmproxy/bin/中新建一個python文件,名字可以隨便起,我這邊用的名字是properties.py,內(nèi)如如下
TARGET_URL = 'https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html' INJECT_TEXT = 'Object.defineProperties(navigator,{webdriver:{get:() => false}});' #js執(zhí)行文件def response(flow):if flow.request.url.startswith(TARGET_URL):flow.response.text = INJECT_TEXT + flow.response.textprint('注入成功')if 'um.js' in flow.request.url or '115.js' in flow.request.url:# 屏蔽selenium檢測flow.response.text = flow.response.text + INJECT_TEXT把上面所有代碼復(fù)制到properties.py文件中,并保存
在mitmproxy/bin/目錄下terminal執(zhí)行一次mitmdump后關(guān)閉terminal
在C:/User/Username/.mitmproxy文件中雙擊”mitmproxy-ca.p12“開始導(dǎo)入證書,選擇默認(rèn)下一步就好,但是記得在證書儲存的時候不要選擇默認(rèn)的選項,要將證書儲存在受信任的根證書頒發(fā)機構(gòu)中
導(dǎo)入證書完成后,在…/mitmproxy/bin/路徑下打開terminal,輸入命令:mitmdump -s porperties.py啟動mitmproxy
打開”問卷星自動腳本“項目中的start包中的mainrun類中設(shè)置好定時任務(wù)(不太清楚spring boot中怎么直接執(zhí)行一個方法)并運行,就可以開始自動跑問卷了。
問題處理
常見問題
腳本跑一段時間后,統(tǒng)計數(shù)據(jù)數(shù)量和腳本跑的次數(shù)不同。
原因:問卷星服務(wù)器可能屏蔽了異常的提交
解決方案:建議放慢速度,使用IP代理軟件(一般注冊都會送免費時長)更改IP地址,防止拉黑IP(IP異常后過幾十分鐘還是可以繼續(xù)提交的,不過只用本地IP的話會大大限制正常提交次數(shù)),建議出現(xiàn)滑動驗證碼時暫停程序并切換IP,雖然我已經(jīng)將滑動驗證碼自動處理。
腳本打開網(wǎng)頁時chrome提示鏈接不安全界面。
原因:mitmproxy未安裝證書
解決方案:根據(jù)教程或者網(wǎng)上自己尋找教程(關(guān)鍵字:”mitmproxy證書“)安裝證書。
腳本打開網(wǎng)頁時無法打開網(wǎng)頁,提示未連接到互聯(lián)網(wǎng)。
原因:沒啟動mitmdump
解決方案:在mitmproxy安裝目錄下的bin目錄中打開terminal執(zhí)行”mitmdum -s properties.py“命令
提交問卷時顯示異常
原因:當(dāng)前IP短時間內(nèi)過多提交問卷,提交頻繁
解決方案:使用IP代理軟件更換IP或者暫停程序過0.5-1小時重試。
其他問題
有問題可以加我qq1315364596(不常用)/微信1315364596,能幫得上的會幫幫你
總結(jié)
以上是生活随笔為你收集整理的JAVA、Python、selenium、问卷星自动脚本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab 三相桥式全控整流电路
- 下一篇: 有什么手机软件可以修视频?常用3款视频处