前言
最近公司希望我开发的一个功能是根据链接爬取页面的文章。我太难了。
感觉在才入职没几天。我还是个菜鸡啊
没办法,得硬着头皮搞
正好周末,自己研究了下。以为很难,其实比想象的简单些。
主要用的就是Jsoup依赖包解析HTML文件。
怎个过程可以看做以下两步
- 获取HTML资源
- 从资源里面获取想要的数据
我之前是完全不了解这个东西。然后问了一个干了几年的大佬。人家回了一个词:Jsoup
我今天就研究了下。然后做了一个捕获最近15天天气的小demo。姑且认为自己已经入门了
Jsoup是什么
Jsoup是一款Java的HTML解析器。
Jsoup百科
Jsoup中文开发指南
文档很短,我照着文档,然后自己在IDEA里面试了下操作。不是特别难。然而我的解释肯定没有文档全。不做过多解读。我下面的示例有注释
需要导包:直接在maven库里面Jsoup就能找到了
示例
public class TestJsoup {
@Test
public void run() throws IOException {
// 输入链接 我这里要获取天气,当然是爬取天气网
String url = "https://www.tianqi.com/shanghai/15/";
// 获取网页内容,这里的doc就就是整个HTML文件了。一个Document类型
Document doc = Jsoup.connect(url).get();
// 获取天气信息,我事先有通过F12看过我要爬取的网页结构,我要的信息全部在一个<ul class="weaul"> 的标签里面
Elements ul = doc.getElementsByClass("weaul");
// 获取text内容,这样所有的天气信息在text里面,一个String类型,以空格分开
String text = ul.text();
// 将其转化成数组,这样就把天气存起来了(我后面还有其他格式处理的操作,但是没必要贴出来,数据已经获取到了)
String[] temp = text.split(" ");
// 这个是我试验包各类方法的时候用到的
System.out.println(ul.text());
// 下面这些方法是我之前刚练习,试验各类方法的的作用时用到的(毕竟接口文档是英文)
//System.out.println(ul);
/* Element head = doc.getElementById("head");
head.removeAttr("meta");
head.removeAttr("script");
System.out.println(head.data());*/
/*doc.title();
doc.body();
doc.
System.out.println(doc.head());*/
}
}
效果图:
小结
- 本来以为很复杂,原来不过如此。
- 难怪大佬只回了我一个词
- 有些东西没做过不代表不会。只是不熟练而已
- 仅是入门而已,深入还需要练习