Jsoup是一个开源的解析html的类库,非常好用,亦可用来获取html源文件。利用Jsoup也可以轻松将一个网站全部抓取下来。我的思路是这样的:
1.抓取网站的导航页面,将导航链接解析出来存好。
2.顺着导航链接获取导航分类的页面数。
3.抓取分类页面并解析具体文章链接。
4.抓取具体文章页面并解析内容。
这样要求目标站点结构清晰,分类明确。
下面是一个简单示例:
package cn.zhf.test;
import java.io.IOException;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class FetchTest {
public static void main(String[] args) {
getUrl();
}
public static void getUrl(){
Connection conn = Jsoup.connect("http://mianshibaike.com/data/sitemap.html").timeout(10000);
try {
Document doc = conn.get();
String html = doc.html();
Elements element = doc.getElementsByAttribute("href");
int i=0;
for(Element ele: element){
System.out.println(ele.absUrl("href"));
i++;
}
System.out.println(i);
} catch (IOException e) {
e.printStackTrace();
}
}
}