Android利用Jsoup爬蟲框架解析網頁html
Jsoup是不是叫爬蟲框架我不清楚,只是比較應景,別深究。Jsoup功能非常強大,它可以使用DOM 或CSS 選擇器來查找、取出數據。有人會說,我使用字符串操作函數構造取文本中間函數也是可以從網頁HTML中取得需要的內容,那是你沒遇到經常改版的網頁,並且使用字符串操作來解析網頁是非常麻煩的,因為不同的網頁字符串標識不一樣,而Jsoup不僅使用方便,而且可以像jQuery的選擇器那樣取數據,非常好用,不吹了,看下面介紹。
Jsoup 是一款Java 的HTML 解析器,可直接解析某個URL 地址、HTML 文本內容。它提供了一套非常省力的API,可通過DOM,CSS 以及類似於jQuery 的操作方法來取出和操作數據。
Jsoup的主要功能:
1.從一個URL,文件或字符串中解析HTML;
2.使用DOM或CSS選擇器來查找、取出數據;
3.可操作HTML元素、屬性、文本;
Jsoup官方地址:https://jsoup.org/download
使用案例
private void getDataByJsoup (){ final NewsInfo newsInfo = new NewsInfo (); final Message message = new Message (); newsList . add ( newsInfo ); //開啟一個新線程 new Thread ( new Runnable () { @Override public void run () { try { //網絡加載HTML文檔 Document doc = Jsoup . connect ( "https://voice.hupu.com/nba" ) . timeout ( 5000 ) //設置超時時間 . get (); //使用GET方法訪問URL Elements elements = doc . select ( "div.list-hd" ); for ( Elementelement : elements ){ String title = element . select ( "a" ). text (); //新聞標題 String url = element . select ( "a" ). attr ( "href" ); //新聞內容鏈接 newsInfo . setTitle ( title ) ; newsInfo . setNewsUrl ( url ); Log . e ( "TAG" , "Jsoup ======>>" + title + url ); } Elements elements1 = doc . select ( "div.otherInfo" ); for ( Element element : elements1 ){ String time = element . select ( "a" ). text (); //時間 newsInfo . setNewsTime ( time ); Log . e ( "TAG" , "Jsoup ======>>" + time ); } message . what = 1 ; } catch ( IOException e ) { message . what = 2 ; e . printStackTrace (); } handler . sendMessage ( message ); } }). start (); }
結果如下圖所示: