jsoup解析html

jar包引用

下载jsoup-1.7.3.jar

maven引用

<dependency>   
	<groupId>org.jsoup</groupId>   
	<artifactId>jsoup</artifactId>   
	<version>1.7.3</version>   
</dependency>		 	    

使用简介

这里只是简单列举一些方法,更多的放在在使用的时候,ide的自动提示里都可以看到,根据名字理解就可以.

    String htmlCode = "<input id=\"id\" name=\"name\">";
	Document doc = Jsoup.parse(htmlCode);
    // 可以根据元素的属性来查,比如类名,id,或者自定义的属性来查询元素
    Elements e = doc.getElementByAttribute();
    // 新增一个元素
    Element element1 = new Element(Tag.valueOf("div"),"");
    // 新建一个Tag  
    Tag tag = Tag.valueOf("input");
    // 将element1添加到e的前面
    e.before(element1);
    // 将element2天假到e的后面
    e.after(element1);
    // 添加一个子节点
    e.append(Node);

注意,对Document的get方法获取的Elements进行修改,那么即是在原Document里修改.

应用场景

  1. 可以使用jsoup来清理网站上的恶意攻击js,使用Jsoup的clean.
  2. 可以使用Jsoup来爬取网站的信息.

应用实例

	/**
	*爬取某个网站的小说方法
	**/
	private static void getNovers(String url,String contentId,String nextLinkId) throws IOException{
		String dirName = "/Users/admin/";
		String text = "";	
		Document doc = Jsoup.connect(url).get();
		Element e = doc.getElementById(contentId);
		if(e==null){
			
		}else{
			Elements h2 = doc.getElementsByTag("h2"); //标题
			File file = null;
			if(h2!=null&&h2.get(0)!=null) {
				file = new File(dirName+h2.get(0).text()+".txt");
			}
			text  = e.text().replace("    ",  "\r\n    ");
			FileOutputStream os = new FileOutputStream(file);
			String title = h2.get(0).text()+"\r\n";
			byte[] titlearr = title.getBytes();
			os.write(titlearr, 0, titlearr.length);
			os.flush();
			
			byte[] str = text.getBytes();
			os.write(str, 0, str.length);
			os.flush();
			os.close();
		
			Element next =  doc.getElementById(nextLinkId);
			if(next!=null){
				Elements links = next.children();
				Element  linkElement = links.get(links.size()-1);
				String nextUrl = linkElement.attr("href");
				 getNovers(nextUrl,contentId,nextLinkId);
			}
			
		}
		
	}
posted @ 2017-06-08 15:16  人间四月  阅读(181)  评论(0编辑  收藏  举报