js抓取网页内容(java项目有时候我们需要别人网页上的数据(组图))
优采云 发布时间: 2021-12-02 18:20js抓取网页内容(java项目有时候我们需要别人网页上的数据(组图))
有时候我们在java项目中需要从别人的网页中获取数据,我们该怎么办?我们可以使用第三方框架包jsou来实现,jsoup的中文文档,具体怎么实现?然后跟着我一步一步
首先要做的就是准备第三方机架包,下载地址,拿到jar后需要做什么?别着急,让我们慢慢来
将jsoup.jar复制到项目的WebRoot—>WEB-INF—>lib文件夹
那我们就来介绍一下这款架子包吧!
项目右键选择构建路径—>配置构建路径—>库—>添加jars—>在刚才放入的目录中找到jsoup
准备工作已经完成,接下来就是我们的编码部分,加油!
既然是爬取网页的内容,那么首先肯定是抓到的网站的地址,这里是我的一篇博客。
这是我的文章的截图。比如我想抓取Android片段和知识点,我会不断更新本文。
//获取整个网站的根节点,即html的开头和结尾,这里get方法和post方法是一样的
文档文档 = Jsoup.connect(url).get();
//输出后,我们会看到整个字符串如下
System.out.println(文件);
这里只是截图的一部分
我们会看到我们需要抓取的那段文字被包裹在了a标签中,另外一个重要的就是id=cb_post_title_url。看过文档的应该知道,jsoup中有一个getElementById方法,其实和js中获取元素是一样的。是的,这里我们可以使用
GetElementById方法来获取这个标签,获取之后就可以获取里面的内容了吧?而且正好jsou也给我们提供了这样一个方法text()方法,就是获取label的文本内容,记住是text的形式,而不是html
如下,我们使用getElementById方法获取我们想要的a标签
元素 a = document.getElementById("cb_post_title_url");
这时候我们输出的内容如下
System.out.println(a.text());
你得到了我们想要的吗?当然,这只是jsoup最简单的爬取。如果需要获取列表形式,jsoup也是可以的。我们都知道 id 是唯一的,不能重复,所以我们通过 id 得到的 只能是一行标签
但是对于ul-li这样的一般列表,我们可以使用getElementsByTag这个方法通过标签名来获取,然后通过for循环一一抓取。然后我们将附上代码。
package com.luhan.text;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class Text {
private static final String url = "http://www.cnblogs.com/luhan/p/5953387.html";
public static void main(String[] args) {
try {
//获取整个网站的根节点,也就是html开头部分一直到结束
Document document = Jsoup.connect(url).post();
Element a = document.getElementById("cb_post_title_url");
System.out.println(a.text());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
jsoup中的方法我就不一一介绍了。不明白的可以去jsoup的中文文档。再说说比较重要的方法。
Jsoup.connect(url).post(); 获取网页的follow目录
getElementById 通过 id 获取
getElementsByClass 通过类获取
getElementsByTag 按标签名称获取
text() 获取标签的文字,再次强调是文字
html() 获取标签中的所有字符串,包括html标签
attr(attributeKey) 获取属性内部的值,参数为属性名
注意
jsoup获取的网页根目录可能与源码不同,需要注意
至此,jsoup对网页数据的抓取就结束了。这不是很好。欢迎大家指点。我使用java控制台。javaweb和Android的用法是一样的。首先导入框架,然后调用方法。