由于以前参加比赛摆摊的经验,有不少人都会问关于咱们专题是怎么让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资料夹底下。