上次說到我想用java做自動登入系統,不過自動登入系統也有動態網站(有javaScript的程式碼,如Youtube網站)與非動態網站(無javaScript的程式碼,如痞客邦)的區別。非動態網站因為較簡單,所以在這裡就不贅訴了,直接給大家附上相關的連結 Link,如果之後有時間的話再發一篇文章跟大家講解,今天的重點主要擺在動態網頁的爬蟲指令。
[初始設定]
你可以使用這些指令來控制程式幫你操控網頁的運作,首先要先import需要的套件,
然後需要呼叫JavascriptExecutor
[輸入文字]
呼叫後,就可以用程式來控制網頁的運作囉,那首先教大家如何將文字輸入你想要輸入的地方,像是輸入帳號,輸入密碼的欄位。要告訴程式這些欄位的位置,你需要先到瀏覽器中,到你想要輸入的地方按下右鍵檢查,然後再按右鍵,複製xpath
複製完後使用以下程式碼輸入文字。
js.executeScript("arguments[1].value = arguments[0]; ",要輸入的文字,要輸入之欄位的xpath),為甚麼第一欄是arguments[1]...的其實我也不知道,不過就照打吧,反正這樣就可以輸入文字進去欄位囉。如果要輸入密碼也是用同樣的方法。
[點擊按鈕]
第二個要教大家的是如何點擊某個按鈕,首先也是在按鈕那邊按右鍵檢查,然後再按右鍵複製按鈕的xpath。之後用以下指令就可以點擊按鈕囉,以下是點選google登入畫面的繼續按紐
js.executeScript("arguments[0].click();",driver.findElement(By.xpath(按鈕的xpath))),為甚麼第一欄是arguments[1]...的我其實還是不知道,大家就照打吧XD,反正這樣就可以點擊按鈕囉。
[得到innerText]
再來,如果要獲得動態網頁中某一段的內部文字,比如我想要去抓取youtube的觀看人數的話可以用以下指令:
不過要注意的是,像youtube這種動態網站,有時要讀取會花不少時間,所以最好需要等javascript跑完,或是多執行幾次,比較不會失敗。等待可以用以下指令
把他加到if中,如果true的話就開始執行
[得到網頁原始碼]
最後,教大家如何取得動態網頁的原始碼,也就是你在一個網站中按F12所得到的程式碼,這個按ctrl-U得到的靜態原始碼不同喔!它是動態的程式碼~~~ 請用以下指令
[完整程式碼]
這個程式是爬取youtube的觀看人數,然後快速登入google帳號的一支java程式。然後因為程式是圖形介面的,造成程式碼非常的長...,全部貼上來有點不方便,因此我將它放在github上面,有興趣的朋友們可以去下載看看囉。附上連結: Link (程式在 src/YoutubeWebCrawl 資料夾中的 yotubeGUI.java 檔案 )
留言列表