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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

JAVA、Python、selenium、问卷星自动脚本

發(fā)布時(shí)間:2024/3/24 python 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA、Python、selenium、问卷星自动脚本 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

項(xiàng)目地址

https://gitee.com/Hardy1/questionnaire-star-script

前期準(zhǔn)備

  • 配置jdk
  • 安裝python
  • 下載安裝mitmproxy
  • 代碼實(shí)現(xiàn)

    • 項(xiàng)目中service包中的auto_service是主運(yùn)行邏輯代碼,其他包中的代碼一般無(wú)需更改

    • auto_service中的代碼從注釋”答卷邏輯start“到”答卷邏輯end“是對(duì)應(yīng)問(wèn)卷的答題邏輯處理

      其中int 的i1,i2,i3之類的數(shù)據(jù)是為了確定選擇哪個(gè)選項(xiàng)

      boolean類型的數(shù)據(jù)是為了對(duì)多選題中的每個(gè)選項(xiàng)進(jìn)行隨機(jī)選取,true為選擇,false為不選擇,當(dāng)多選題所有選項(xiàng)都是false也就是不選擇時(shí),指定選擇一個(gè)選項(xiàng)或者隨機(jī)選擇一個(gè)(防止出現(xiàn)都不選的情況而不符合答題要求),我代碼中指定選擇最后一個(gè)選項(xiàng)。

      if (b20_1==false && b20_2==false && b20_3==false && b20_4==false && b20_5==false){//選擇第五個(gè)選項(xiàng)driver.findElement(By.xpath("//*[@id=\"div20\"]/div[2]/div[5]/span")).click();}
    • 對(duì)于xpath中引用變量的代碼,說(shuō)明這個(gè)地方的變量可以決定具體要選擇的選項(xiàng)(邏輯代碼中的int、Boolean類型的代碼都是隨即出來(lái)的,所以腳本跑出來(lái)的數(shù)據(jù)具有隨機(jī)性,無(wú)法應(yīng)用于真正的數(shù)據(jù)分析中。)

    • tools包中的seleniumAPI類中,需要自定義chrome driver的本地路徑,建議直接放在C盤根目錄下,就不用動(dòng)我的默認(rèn)位置了。不過(guò)也可以自定義,我默認(rèn)的驅(qū)動(dòng)路徑是C:/chromedriver.exe(注意,每個(gè)系統(tǒng)中的路徑分隔符不同,在java中應(yīng)當(dāng)寫作:C:\\chromedriver.exe)

    項(xiàng)目配置

  • 打開(kāi)”問(wèn)卷星自動(dòng)腳本“項(xiàng)目,設(shè)置好maven、jdk等配置

  • 打開(kāi)mitmproxy安裝路徑,在…/mitmproxy/bin/中新建一個(gè)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檢測(cè)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“開(kāi)始導(dǎo)入證書,選擇默認(rèn)下一步就好,但是記得在證書儲(chǔ)存的時(shí)候不要選擇默認(rèn)的選項(xiàng),要將證書儲(chǔ)存在受信任的根證書頒發(fā)機(jī)構(gòu)中

  • 導(dǎo)入證書完成后,在…/mitmproxy/bin/路徑下打開(kāi)terminal,輸入命令:mitmdump -s porperties.py啟動(dòng)mitmproxy

  • 打開(kāi)”問(wèn)卷星自動(dòng)腳本“項(xiàng)目中的start包中的mainrun類中設(shè)置好定時(shí)任務(wù)(不太清楚spring boot中怎么直接執(zhí)行一個(gè)方法)并運(yùn)行,就可以開(kāi)始自動(dòng)跑問(wèn)卷了。

  • 問(wèn)題處理

    常見(jiàn)問(wèn)題

  • 腳本跑一段時(shí)間后,統(tǒng)計(jì)數(shù)據(jù)數(shù)量和腳本跑的次數(shù)不同。

    原因:問(wèn)卷星服務(wù)器可能屏蔽了異常的提交
    解決方案:建議放慢速度,使用IP代理軟件(一般注冊(cè)都會(huì)送免費(fèi)時(shí)長(zhǎng))更改IP地址,防止拉黑IP(IP異常后過(guò)幾十分鐘還是可以繼續(xù)提交的,不過(guò)只用本地IP的話會(huì)大大限制正常提交次數(shù)),建議出現(xiàn)滑動(dòng)驗(yàn)證碼時(shí)暫停程序并切換IP,雖然我已經(jīng)將滑動(dòng)驗(yàn)證碼自動(dòng)處理。

  • 腳本打開(kāi)網(wǎng)頁(yè)時(shí)chrome提示鏈接不安全界面。

    原因:mitmproxy未安裝證書

    解決方案:根據(jù)教程或者網(wǎng)上自己尋找教程(關(guān)鍵字:”mitmproxy證書“)安裝證書。

  • 腳本打開(kāi)網(wǎng)頁(yè)時(shí)無(wú)法打開(kāi)網(wǎng)頁(yè),提示未連接到互聯(lián)網(wǎng)。

    原因:沒(méi)啟動(dòng)mitmdump
    解決方案:在mitmproxy安裝目錄下的bin目錄中打開(kāi)terminal執(zhí)行”mitmdum -s properties.py“命令

  • 提交問(wèn)卷時(shí)顯示異常

    原因:當(dāng)前IP短時(shí)間內(nèi)過(guò)多提交問(wèn)卷,提交頻繁

    解決方案:使用IP代理軟件更換IP或者暫停程序過(guò)0.5-1小時(shí)重試。

  • 其他問(wèn)題

    有問(wèn)題可以加我qq1315364596(不常用)/微信1315364596,能幫得上的會(huì)幫幫你

    總結(jié)

    以上是生活随笔為你收集整理的JAVA、Python、selenium、问卷星自动脚本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。