抓取js動態產生資料

來源:互聯網
上載者:User

標籤:body   cli   span   roo   out   解決方案   ble   trace   auto   

  最近在抓資料,一般的網頁資料抓取相對容易一些,今天在抓電視貓的節目單,發現有些資料時抓取不到的,Java端得到的HTML檔案裡面沒有某一段代碼,查了很多資料,發現說是js動態產生的資料,無法直接抓取,有一種解決方案是利用找到ajax請求地址和參數,重新抓取,該方法存在一個問題,就是當參數被加密過時,該方法就不好用了,所以,這裡用了一個辦法,就是利用HTMLunit來抓取(可以利用jsuop來處理HTML檔案),jar包:http://download.csdn.net/detail/joy460154849/9822849(HTMLunit所用到的jar包全部匯入後,稍微調整一下,因為有些有重複匯入或者版本問題)代碼如下:

public static String  getHtml(String url){        // 類比一個瀏覽器          @SuppressWarnings("resource")        WebClient webClient = new WebClient();          //webclient參數載體          WebClientOptions clientOptions = webClient.getOptions();          // 設定webClient的相關參數          clientOptions.setJavaScriptEnabled(true);          clientOptions.setCssEnabled(false);          webClient.setAjaxController(new NicelyResynchronizingAjaxController());          clientOptions.setTimeout(35000);          clientOptions.setThrowExceptionOnScriptError(false);          // 類比瀏覽器開啟一個目標網址          HtmlPage rootPage = null;        try {            rootPage = webClient.getPage(html);        } catch (FailingHttpStatusCodeException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (MalformedURLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }            //儲存頁面          //rootPage.save(new File("/home/share/Test/1"));                    //body html資訊          HtmlElement htmlElement = rootPage.getBody();          String xmlContent = htmlElement.asXml();          return xmlContent;    }  

 

抓取js動態產生資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.