昨天TJ君的一个好朋友来找TJ君帮忙,说是想从网上爬取一些公开的数据,其实就是朋友原来需要每天自己从网页上记录一些比赛的数据,用作后续分析,想偷个懒,靠程序去实现。
既然朋友有诉求,TJ君当然要想办法解决,于是想起了曾经一个看到过的开源基于JAVA编写的网页解析框架,jsoup,今天也来和大家一起分享学写下。
jsoup,是一款可以通过程序自动获取网页数据的开源项目,项目提供一个非常方便的API接口,通过使用HTML5 DOM方法和CSS选择器来获取URL中的数据,并进行提取操作。
jsoup通过实现WHATWG HTML5规范,完成了如下特点:
- 从URL、文件或字符串中提取和解析HTML
- 使用DOM遍历或CSS选择器查找和提取数据
- 调整HTML元素、属性和文本
- 根据安全列表清除用户提交的内容,以防止XSS攻击
- 输出整洁的HTML
对于那种杂乱无章、没有固定规范的网页,jsoup基本都可以轻松的创建一个合理的解析树。
下面这个是作者给出的演示案例:
代码语言:javascript复制Document doc = Jsoup.connect("https://en.wikipedia.org/").get();
log(doc.title());
Elements newsHeadlines = doc.select("#mp-itn b a");
for (Element headline : newsHeadlines) {
log("%snt%s",
headline.attr("title"), headline.absUrl("href"));
}
案例中解析了Wikipedia的主页,然后将内容解析成DOM,然后选择了部分标题,放入元素列表。当然这是最简单的示例,实际运用中可能会碰到更加复杂的情况以及一些导出数据的问题,如果感兴趣的小伙伴多的话,TJ君后续结合朋友的诉求再专门讲解一篇爬虫实战。