<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                網絡爬蟲第一個要面臨的問題,就是如何抓取網頁,抓取其實很容易,沒你想的那么復雜,一個開源`HtmlUnit`包,4行代碼就OK啦,例子如下: ~~~ final WebClient webClient= new WebClient(); final HtmlPage page=webClient.getPage( "http://www.yanyulin.info" ); System.out.println(page.asText()); webClient.closeAllWindows(); ~~~ 在程序中寫上上面的4行代碼,運行,就可以得到煙雨林博客首頁的全部內容,上面代碼在運行的過程中會出現很多警告,出現這些警告的主要原因是由于以下兩點: 1、`HtmlUnit`對`Javascript`的支持不是很好 2、`HtmlUnit`對`CSS`的支持不是很好 明白了上面的兩點后,將代碼重新改寫一下,該禁用的就禁用,同時禁用一些不必要的功能,也有利于提高程序的運行效率,再者說網絡爬蟲也不需要CSS的支持滴 ~~~ final WebClient webClient= new WebClient(); webClient.getOptions().setCssEnabled( false ); webClient.getOptions().setJavaScriptEnabled( false ); final HtmlPage page=webClient.getPage( "http://www.yanyulin.info" ); System.out.println(page.asText()); webClient.closeAllWindows(); ~~~ `HtmlUnit`的使用: 簡介:`HtmlUnit`說白了就是一個瀏覽器,這個瀏覽器是用Java寫的無界面的瀏覽器,正因為其沒有界面,因此執行的速度還是可以滴,`HtmlUnit`提供了一系列的API,這些API可以干的功能比較多,如表單的填充,表單的提交,模仿點擊鏈接,由于內置了`Rhinojs`引擎,因此可以執行`Javascript` 作用:web的自動化測試(最初的目的),瀏覽器,網絡爬蟲 重要API的使用 在介紹API的使用之前要先明白的一個問題是,WebClient,WebWindow,Page三者之間的關系,所有的頁面最終都是在一個 WebWindow對象里面,WebClient在創建時會自動的創建一個WebWindow對象,當調用getPage時會將新頁面加載到 WebWindow里,你可以理解成WebClient就是IE內核,WebWindow就是呈現頁面的瀏覽器窗口,三者之間的關系圖如下圖所示: 1、模擬特定瀏覽器,也可以指定瀏覽器的相應版本(HtmlUnit最新版2.13現在可以模擬的瀏覽器有`Chrome`/`FireFox`/`IE`) ~~~ //模擬chorme瀏覽器,其他瀏覽器請修改BrowserVersion.后面 WebClient webClient= new WebClient(BrowserVersion.CHROME); ~~~ 2、查找特定元素,通過get或者XPath可以從HtmlPage中獲得特定的Html元素,如下例子 方法一,通過get方法獲取 ~~~ HtmlPage page=webClient.getPage( "http://www.yanyulin.info" ); //從[煙雨林博客]上獲取標簽hed的內容 HtmlDivision div=(HtmlDivision)page.getElementById( "hed" ); ~~~ 方法二,通過XPath獲取,XPath通常用于無法通過Id搜索,或者需要更為復雜的搜索時,XPath的相關教程 XPath相關教程請查看我的個人博客 ~~~ //同樣可以打印出hed的內容,//div中//表示搜索整個文檔中的div,并將這些div //放入list中,然后獲取第一個div final HtmlDivision div = (HtmlDivision) page.getByXPath( "//div" ).get( 0 ); System.out.println(div.asXml()); ~~~ 3、代理服務器的配置,代理的配置很簡單,只需要配置好地址,端口,用戶名與密碼即可 ~~~ final WebClient webClient = new WebClient(BrowserVersion.CHROME, "http://127.0.0.1" , 8087 ); final DefaultCredentialsProvider credentialsProvider = (DefaultCredentialsProvider) webClient.getCredentialsProvider(); credentialsProvider.addCredentials( "username" , "password" ); ~~~ 4、模擬表單的提交 ~~~ //獲取表單 final HtmlForm form = page.getFormByName( "form" ); //獲取提交按扭 final HtmlSubmitInput button = form.getInputByName( "submit" ); //一會得輸入的 final HtmlTextInput textField = form.getInputByName( "userid" ); textField.setValueAttribute( "test" ); //點擊提交表單 final HtmlPage page = button.click(); ~~~ API的使用就介紹到這,網絡爬蟲中主要目的就是獲取頁中所有的鏈接,代碼如下: ~~~ java.util.List achList=page.getAnchors(); for (HtmlAnchor ach:achList){ System.out.println(ach.getHrefAttribute()); } ~~~ 最后來個例子,HtmlUnit模擬瀏覽器登錄`小米網站帳戶`,程運運行的截圖如下,`紅色方框`表示登錄成功跳轉到下一個頁面出現的帳號: ![爬蟲的自我解剖(抓取網頁HtmlUnit)](http://static.open-open.com/lib/uploadImg/20131129/20131129164558_565.jpg) 本博文源代碼下載: > [源碼下載](https://github.com/zwjlpeng/Crawler_Self_Analysis) > > [Java皮膚庫下載](http://yunpan.cn/QURZedFfjFWfQ) > > [HtmlUnit源碼包下載](http://yunpan.cn/QURZ5UXwjnk6W) > > [HtmlUnit的Jar包下載](http://yunpan.cn/QURZ5uZLwFmM9) 來源地址:?[http://www.yanyulin.info/pages/2013/11/fetchPage.html](http://www.yanyulin.info/pages/2013/11/fetchPage.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看