運(yùn)用selenium和apscheduler庫(kù)完成一個(gè)小外掛##
github源碼在此诱建,記得點(diǎn)星:
https://github.com/brandonxiang/selenium_apscheduler_example
引言
機(jī)緣巧合厦坛,我看到一些python寫的游戲外掛的教程(主要是網(wǎng)頁(yè)游戲)工闺,也就是焕梅,點(diǎn)擊屏幕位置缀拭。這也激發(fā)了我去實(shí)現(xiàn)類似的功能谆吴,主要用途是去定期點(diǎn)擊瀏覽器屏幕上的某個(gè)控件去實(shí)現(xiàn)一些功能煎谍。當(dāng)然這類似的工具還可以應(yīng)用到其他地方些侍,讓人腦洞大開隶症,例如火車搶票,定時(shí)打卡之類岗宣,內(nèi)容有點(diǎn)敏感蚂会,就不再展開。
原理
這個(gè)小外掛基于python耗式,運(yùn)用了兩個(gè)庫(kù)selenium和apscheduler胁住。
其中,selenium是一個(gè)出色的瀏覽器操作庫(kù)刊咳,英文叫做Web Driver彪见,主要是用于控制(包括IE在內(nèi)的)瀏覽器,網(wǎng)頁(yè)測(cè)試娱挨。當(dāng)然他也可以用作爬蟲余指,參考我的爬蟲之路 (靜態(tài)+動(dòng)態(tài)JS加載) selenium + PhantomJS,雖然我覺(jué)得爬蟲用request+beautifulsoap
會(huì)在效率上更好跷坝,因?yàn)樗唤?jīng)過(guò)瀏覽器端酵镜。同類型的Web Driver庫(kù)還有許多,不在這里展開柴钻。
然而笋婿,apscheduler是一個(gè)定時(shí)框架,支持python解釋器和cron格式顿颅。
用法
克隆源碼缸濒,安裝第三方庫(kù)足丢,運(yùn)行腳本即可。
git clone https://github.com/brandonxiang/selenium_apscheduler_example.git
pip install -r requirements.txt
源碼
selenium
引用webdriver獲取瀏覽器庇配,webdriver提供了Firefox斩跌,PhantomJS等多款國(guó)外瀏覽器可選。browser.get()
則是跳轉(zhuǎn)到某個(gè)網(wǎng)頁(yè)捞慌。
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://XX.XX.com/")
find_element_by_id
和find_element_by_tag_name
則是通過(guò)id
或者tag_name
去找到對(duì)應(yīng)的元素耀鸦。send_keys()
則是往控件內(nèi)部傳值。click()
則是點(diǎn)擊事件啸澡。
WebDriverWait(browser,10).until(EC.title_contains("系統(tǒng)".decode('utf8')))
當(dāng)網(wǎng)頁(yè)發(fā)生跳轉(zhuǎn)袖订,需要利用WebDriverWait(browser,時(shí)間)
等待,否則頁(yè)面加載不完整嗅虏。然而洛姑,until(EC.title_contains("系統(tǒng)".decode('utf8')))
則是等到直到title出現(xiàn)系統(tǒng)兩個(gè)字。詳細(xì)教程參考selenium官網(wǎng)
apscheduler
通過(guò)BackgroundScheduler()
生成一個(gè)后臺(tái)定時(shí)框架皮服,然后將其啟動(dòng)楞艾。
schedular = BackgroundScheduler()
schedular.start()
運(yùn)用解釋器去設(shè)置時(shí)間間隔,這里使用cron龄广,day_of_week
是一個(gè)星期中的某幾天或星期幾硫眯,hour
和minute
就是時(shí)和分,當(dāng)然择同,也有秒的設(shè)定两入。你也可以不使用解釋器和cron來(lái)設(shè)置時(shí)間,那樣自由度更高敲才。詳細(xì)教程參考apscheduler文檔
@schedular.scheduled_job('cron',day_of_week='mon-fri',hour=8,minute=58)
總結(jié)
這里將兩個(gè)框架結(jié)合了一下谆刨。總結(jié)一下归斤,首先了解控件的對(duì)應(yīng)的id或者class等屬性痊夭,然后針對(duì)某個(gè)控件通過(guò)屬性進(jìn)行捕獲,最后生成點(diǎn)擊脏里,文本輸入她我,頁(yè)面跳轉(zhuǎn)等事件即可。
轉(zhuǎn)載迫横,請(qǐng)表明出處番舆。總目錄前端經(jīng)驗(yàn)收集器