自動(dòng)搜索維基百科和百度百科

目的


如果我想知道張藝謀是誰?我會(huì)去百度百科或維基百科搜索一下,那么百度百科或維基百科會(huì)返回張藝謀網(wǎng)頁結(jié)果。如果批量的去操作這種,手動(dòng)去搜索是很浪時(shí)間和人力的。于是,我就寫了一個(gè)SearchWord程序。

在百科上搜索張藝謀

介紹程序原理


其實(shí)我們?nèi)ピ跒g覽器里搜索一個(gè)詞條,然后點(diǎn)擊一下“進(jìn)入詞條”,網(wǎng)頁會(huì)返回一個(gè)頁面,用百度百科舉例如下:

搜索張藝謀結(jié)果頁面

那么我們用程序來做這樣一件事情,也是同樣的道理。具體步驟如下:

  • 模擬一個(gè)虛擬瀏覽器(等同于我們電腦里安裝的瀏覽器)
  • type 一個(gè)詞條(等同于我們在搜索框里輸入一個(gè)“張藝謀”)
  • 觸發(fā)click事件(等同于我們在瀏覽器上點(diǎn)擊“進(jìn)入詞條”)
  • 保存下返回的page頁面(等同于我們看到張藝謀這個(gè)頁面)

核心代碼


模擬生成瀏覽器

準(zhǔn)備htmlunit工具,模擬生成webclient,生成瀏覽器代碼如下:

public static WebClient ConstructWebClient()
    {
        //set the Brower’s version 
        WebClient webClient = new WebClient(BrowserVersion.getDefault());
        // set Brower support javascript和 css
        webClient.getOptions().setJavaScriptEnabled(true);
        webClient.getOptions().setCssEnabled(false);
        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
        // set Brower link time limit
        webClient.getOptions().setTimeout(120000);
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
        webClient.getOptions().setAppletEnabled(false);
        return webClient;
    }

type and click

 /**
             * Search the word on WIKI 
             */
            HtmlForm form = page.getForms().get(0);
            HtmlTextInput htmlTextInput = form.getInputByName("search");
            htmlTextInput.setValueAttribute(word);
            HtmlSubmitInput go = form.getInputByName("go");
            resultPage = go.dblClick();
/**
             * Enter the word on search 
             */
            HtmlForm form = page.getForms().get(0);
            HtmlTextInput htmlTextInput = form.getInputByName("word");
            htmlTextInput.setValueAttribute(word);
            HtmlButton button = (HtmlButton) page.getElementById("search");
            resultPage = button.click();

結(jié)束語


其實(shí)實(shí)現(xiàn)一個(gè)簡單功能是很容易的,但是要結(jié)構(gòu)化解析返回結(jié)果頁面還是一件很費(fèi)神的事情。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,716評(píng)論 25 709
  • 我喜歡黑暗,喜歡獨(dú)處,喜歡幽閉 ,喜歡陰暗的下雨天聽下雨的聲音,我喜歡一個(gè)人呆著,所以我一個(gè)在家會(huì)把所有窗...
    南煙紗閱讀 284評(píng)論 0 0
  • 看到這個(gè)題目一定會(huì)大跌眼鏡吧,搞什么鬼,晴天下雨還是有可能的,天上掉餡餅也還可以幻想一下,但是天上下豬這個(gè)腦洞實(shí)在...
    曉嚕?;j閱讀 28,759評(píng)論 0 8
  • 我只轉(zhuǎn)載覺得可以使用的. 1.瀏覽器加載和渲染html的順序 1、IE下載的順序是從上到下,渲染的順序也是從上到下...
    光小月閱讀 851評(píng)論 0 1

友情鏈接更多精彩內(nèi)容