java抓取网页内容(java项目有时候咱们须要别人网页上的数据(图))
优采云 发布时间: 2022-03-25 00:13java抓取网页内容(java项目有时候咱们须要别人网页上的数据(图))
Java项目 有时候我们需要别人网页上的数据,我们应该怎么做?我们可以使用第三方架子包jsou来实现,jsoup的中文文档,具体怎么实现呢?那就跟着我一步一步html
最早决定是准备这个第三方架子包,下载地址,拿到这个jar后怎么办?别着急,让我们慢慢来java
将jsoup.jar复制到项目的WebRoot—>WEB-INF—>lib文件夹节点
我们以后需要介绍这个架子包!网络
项目右键选择构建路径—>configurebuild path—>libraries—>add jars—>在刚才放入的目录下找到jsoup框架
准备工作已经完成,接下来就是我们的编码部分了,加油!发帖
既然是抓取网页的内容,那肯定有最先被抓到的网站的地址。这是我的博客之一。网站
这是我的文章截图,比如我想抓取一些Android知识点,以后会更新。这段文字ui
//获取整个网站的根节点,也就是html的开头一直到结尾,这里get方法,post方法一样
Document 文档 = Jsoup.connect(url).get();编码
//输出我们会在下面看到整个字符串
System.out.println(文档);url
这只是截图的一部分
我们会看到我们需要抓取的文字被a标签包裹着,另外一个重要的就是id=cb_post_title_url。看过文档的应该都知道jsoup中有一个getElementById方法,其实是从js中获取的元素是一样的,这里我们可以使用
getElementById的方法来获取这个a标签,拿到之后就可以拿到里面的内容了吧?而且恰好jsou也给我们提供了这样一个方法,text()方法,就是获取标签的文本内容,记住是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();获取网页的目录
getElementById通过id获取
getElementsByClass通过类获取
getElementsByTag 通过标签名获取
text() 获取标签的文本,再次是文本
html() 获取标签中的所有字符串,包括html标签
attr(attributeKey) 获取属性中的值,参数为属性名
注意
jsoup获取的网页根目录可能与源码不同,需要注意
jsoup对网页数据的爬取到此结束。这不是很好。欢迎大家多多指教。我使用java控制台。 javaweb和Android的用法是一样的。首先需要导入框架,然后调用方法。好的