由於以前參加比賽擺攤的經驗,有不少人都會問關於咱們專題是怎麼讓JAVA / Android的讀到網頁上的文字,因此我這個無業遊民就來回饋你們了!!
廢話很少說,立刻來講明到底要怎麼使用JSOUP─HTML/ XML解析取得網頁上的文字!!html
關於JSOUP
它是一個別人寫好的JAVA套件,能夠解析HTML及XML,至因而爲何能作到,
由於HTML和XML有所謂的標籤java
如上圖,就是這個左右大小於括起來的東西,
它能取得指定的標籤,一直到下一個結束爲止,因此凡有標籤的網頁,JSOUP都能取得標籤包夾的資料。
因而乎,咱們能夠概括出JSOUP能做的事情有:node
取得HTML網頁的文字(標籤若重覆,則取得方法在後面有範例)
取得XML網頁的文字(由於標籤不會有重覆的狀況,解析標籤會達到最佳效果)
資料庫的資料(將取得資料庫的PHP的網頁按右鍵檢視原始碼後,會顯示成HTML語言,接下來的方法同HTML)
若要取得一些每日天氣的情報,能夠至中央氣象局的RSS,同樣使用JSOUP解析網頁上的內容
可使用在JAVA上,固然也能使用在Android上,但需作一些設定,就能將上述四點都應用至Android app
想到待補... ..
JSOUP事前工做
請先至JSOUP官網將JAR載檔下來http://jsoup.org/downloadandroid
將載下來的jar檔放到你的要使用的JAVA Project底下
(這一步能夠不作,但若是換電腦的話罐會找不到或罐子路徑錯誤)app
開啓撰寫平臺ui
點擊Java Build Path,並按下右側的添加外部JAR選擇你剛剛載的jsoup.jar檔案的路徑
(這一步若是在換電腦寫程序時,路徑會跑掉,得從新再作一次)url
加入後會長下面那個樣子,這樣就表示能夠開始使用JSOUP了.net
JSOUP簡單範例程序及說明
下面將以簡單的HTML網頁做爲範例解說:code
<html> <head> <meta http-equiv="Content-Type" content="text/html;
charset=utf-8"> <title>今天你好嗎?</title> </head> <body>xml<table> <tr><td>喜</td><td>樂</td></tr> <tr><td>怒</td><td>哀</td></tr> </table> </body> </html>
這是一個有表的HTML網頁,其顯示結果爲
就...。長這個樣子而已
接下來我打算解析這個網頁的標題以及表中的第二個值
JAVA代碼以下:
import java.net.URL; import org.jsoup.Jsoup; import
org.jsoup.nodes.Document; import org.jsoup.parser.Parser; import
org.jsoup.select.Elements;public class main { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Parsing(); } public static void Parsing() throws Exception { URL url = new URL(&amp;amp;amp;amp;amp;amp;quot;http://在這邊輸入你要解析的網頁網址&amp;amp;amp;amp;amp;amp;quot;); Document xmlDoc = Jsoup.parse(url, 3000); //使用Jsoup jar 去解析網頁 //(要解析的文件,timeout) Elements title = xmlDoc.select(&amp;amp;amp;amp;amp;amp;quot;title&amp;amp;amp;amp;amp;amp;quot;);//要解析的tag元素為title
Elements happy = xmlDoc.select(&amp;amp;amp;amp;amp;amp;quot;td&amp;amp;amp;amp;amp;amp;quot;);//要解析的tag元素為td
System.out.println("Title is "+title.get(0).text()); //獲得title tag的內容 System.out.println("you select mood is "+happy.get(1).text()); //獲得td tag的內容 //注意: 因為有好多個td 我想要取得的是<td>樂</td> 是第2個td 因此填get(1) } }
註解已打在代碼上,值得注意的地方是在取得
在上面的關於JSOUP中有提到Android也可使用這個方式,除了將代碼改成Android代碼之外,還要在Android Project的AndroidManifest.xml中調整成如下代碼:
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
進行改版本以及開啓網路權限
Android的代碼我就不提供了(電腦跑Android模擬器很慢+沒有Android手持裝置),就看成業本身改吧XD另外就是加入jsoup.jar檔時,能夠加在Android Project的libs資料夾底下。