jsoup(Java HTML Parser)java html解析器。
使用jsoup解析html很简单,只要抓到最重要的点(获得Document),剩下的代码很容易就顺下来。
Document document = Jsoup.parse(html);
通过Jsoup中静态方法解析HTML文本内容(也可以直接connect网址get),解析成Document对象,接下来操作就是在玩儿这个Document对象。
按照解析html中的图片地址为例,这个时候思路应该是拿到所有的img标签。
直接IDE自动生成,看看哪个方法像解析标签方法
Elements elements = document.getElementsByTag("img");
猜一下,Elements都可能继承集合类,是的,继承的ArrayList<Element>
接下来思路更简单了,迭代Elements,取出每一个Element,想取什么就很简单了。
贴示例代码:(用到了jsoup包,为了读取url内容,还用了commons-io包)
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import org.apache.commons.io.IOUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTest {
public static void main(String[] args) throws IOException {
String url = "https://segmentfault.com/q/1010000002800016";
String html = getURLHTMLText(url);
System.out.println(html);
Document document = Jsoup.parse(html);
//Elements继承ArrayList<Element>
Elements elements = document.getElementsByTag("img");
for (int i = 0; i < elements.size(); i++) {
Element element = elements.get(i);
String src = element.attr("src");
System.out.println(src);
}
}
/***
* 读取url html文本内容
* @param urlStr
* @return
* @throws IOException
*/
public static String getURLHTMLText(String urlStr) throws IOException{
URL url = new URL(urlStr);
URLConnection urlConnection = url.openConnection();
InputStream is = urlConnection.getInputStream();
List<String> lins = IOUtils.readLines(is);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < lins.size(); i++) {
sb.append(lins.get(i));
}
return sb.toString();
}
}
如有错误,欢迎指正
end