一、了解Jsoup

Jsoup是一款Java的HTML解析器,主要用来对HTML解析。

二、JSoup的Mavven依赖

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.14.1</version>
</dependency>

三、Jsoup框架中的常用方法

①connet (String url): 创建一个新的Connection连接对象。

② get(): 取得要解析的一个HTML文件,如果从该URL获取HTML时发生错误,则会抛出IOException异常。

③ parse(String html,String vaseUri): 将输入的HTML解析为一个新的文档(Document),参数baseUri用来相对一个URL转成绝对URL.并指定从哪个网站获取文档.只要解析的不是空字符串,就能返回一个结构合理的文档,其中包含(至少)一个head和一个body的元素。

④parseBodyFragment(): 创建一个空壳的文档,并插入解析过得HTML到Body元素中,如果使用正常的Jsoup.parse(String html)方法,通常也可以得到相同的结果。

⑤Document.body(): 能够取得文档body元素的所有子元素,具体功能与doc.getElementsByTag("body")相同。

⑥Node.atter(String key): 获取一个属性的值。

⑦ Element.text(): 获取一个元素中的文本。

⑧ Element.html()或Node.outerHtml(): 获取元素或属性中的HTML内容。

四、JSoup 解析 HTML 字符串

说明:通过调用fetchHtmlSync("需要爬取的网址")得到HTML字符串str,再调用Jsoup.parse(str)将输入的HTML解析为一个新的文档(Document)。

/*** okhttp客户端* OkHttpClient是一个高效的HTTP客户端,其特性包含:* 支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接池减少请求延时* 透明的GZIP压缩减少响应数据的大小* 缓存响应内容,避免一些完全重复的请求*/private static final OkHttpClient OK_HTTP_CLIENT = new OkHttpClient.Builder()//设置连接超时时间为30秒.connectTimeout(30, TimeUnit.SECONDS)//自定义线程池任务调度策略 dispatcher(线程调度策略).dispatcher(new Dispatcher(new ThreadPoolExecutor(1, 1, 2, TimeUnit.MINUTES, new LinkedBlockingQueue<>(6000), r -> new Thread("spider task"))))//设置代理 没有使用代理ip进行抓取.connectionPool(new ConnectionPool(2, 1, TimeUnit.MINUTES)).build();/*** 同步获取网页数据** @param url 网站地址* @return 网页内容* @throws IOException*/public static String fetchHtmlSync(String url) throws IOException {try {Thread.sleep(20);} catch (InterruptedException e) {e.printStackTrace();}Request request = new Request.Builder().url(url).addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36").addHeader("Referer", "http://……").build();return Objects.requireNonNull(OK_HTTP_CLIENT.newCall(request).execute().body()).string();//Request request = new Request.Builder().url(要获取的网页).build();//String s =OK_HTTP_CLIENT.newCall(request).execute().body().string();//s即为网页源码的字符串//Objects.requireNonNull() 用于在方法中进行参数验证。遇到要判断对象是否为空,空的时候报空指针异常}

五、Jsoup获取信息

使用标准的DOM方法:

根据id查找元素: getElementById(String id)
根据标签查找元素: getElementsByTag(String tag)
根据class查找元素: getElementsByClass(String className)
根据属性查找元素: getElementsByAttribute(String key)
兄弟遍历方法: siblingElements(), firstElementSibling(), lastElementSibling(); nextElementSibling(), previousElementSibling()
层级之间遍历: parent(), children(), child(int index)

这些方法会返回Element或者Elements节点对象,这些对象可以使用下面的方法获取一些属性:

attr(String key): 获取某个属性值
attributes(): 获取节点的所有属性
id(): 获取节点的id
className(): 获取当前节点的class名称
classNames(): 获取当前节点的所有class名称
text(): 获取当前节点的textNode内容
html(): 获取当前节点的 inner HTML
outerHtml(): 获取当前节点的 outer HTML
data(): 获取当前节点的内容,用于script或者style标签等
tag(): 获取标签
tagName(): 获取当前节点的标签名称

例子: 获取id="docContent"标签下所有a标签中href = ""的内容

Document document=Jsoup.parse("爬取网站");
Elements elements=document.getElementById("docContent").select("a");
for (Element element : elements) {String myUrl=element.attr("href");
}

Java Jsoup爬虫入门相关推荐

  1. Java+Jsoup爬虫小红书

    源码链接:https://pan.baidu.com/s/1oOAxJqSMCyVJPNv-iAYW7A 提取码:1co9 Java+Jsoup爬虫小红书,微博,B站 爬取地址:https://www ...

  2. Java+Jsoup爬虫微博

    源码链接:https://pan.baidu.com/s/1oOAxJqSMCyVJPNv-iAYW7A 提取码:1co9 Java+Jsoup爬虫小红书,微博,B站 爬取地址:https://wei ...

  3. java使用jsoup爬虫入门

    一.maven项目里pom添加jsoup依赖 <dependency><groupId>org.jsoup</groupId><artifactId>j ...

  4. Java网络爬虫入门:第01课:网络爬虫原理

    引言 随着互联网的迅速发展,网络资源越来越丰富,信息需求者如何从网络中抽取信息变得至关重要.目前,有效的获取网络数据资源的重要方式,便是网络爬虫技术.简单的理解,比如您对百度贴吧的一个帖子内容特别感兴 ...

  5. android爬虫框架jsoup,Android笔记之JSoup爬虫入门

    前言 闲扯一些没用的,写这篇文章之前是有点私心的,因为之前评论某简书大v的文章是鸡汤,瞬间被拉黑,连个解释和说明的机会都没有,文章语言干涩,内容平平,于是就好奇到底是些什么样的人喜欢和吹捧这样的鸡汤作 ...

  6. Jsoup爬虫入门实战

    一.Jsoup介绍 jsoup 是一款基于 Java 的HTML解析器,它提供了一套非常省力的API,不但能直接解析某个URL地址.HTML文本内容,而且还能通过类似于DOM.CSS或者jQuery的 ...

  7. Java JSOUP爬虫学习分享

    昨天从狂神大佬那学习了如何用jsoup爬去网站数据,现在整理了一下给大家分享一下. 先创建一个名叫JsoupPojo的实体类用来装入数据. @Data public class JsoupPojo { ...

  8. 网络数据采集技术—Java网络爬虫入门与实战 书稿纠错

    出版 本书即将由电子工业出版社出版. 内容纠正 更正内容有:

  9. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

  10. java爬虫入门_Java 网络爬虫新手入门详解

    这是 Java 网络爬虫系列文章的第一篇,如果你还不知道 Java 网络爬虫系列文章,请参看Java 网络爬虫基础知识入门解析.第一篇是关于 Java 网络爬虫入门内容,在该篇中我们以采集虎扑列表新闻 ...

最新文章

  1. 无法执行 FunctionImport“entitys.xx”,因为未将它映射到存储函数。EF
  2. linux基础试卷笔试,顽石系列:Linux基础笔试
  3. Redis-学习笔记03【Redis持久化】
  4. java wait方法_java wait方法
  5. 安装虚拟机Centos系统并安装Docker过程记录
  6. git add后取消_满满干货!——Git知识总结
  7. 微软开始测试自己的Google Base
  8. “迭代期内无变更”与研发心理学(承诺管理,MosCoW方法)
  9. C结构和C++结构之间的区别是什么?
  10. 【万里征程——Windows App开发】使用华丽丽的字体
  11. P2463 [SDOI2008]Sandy的卡片
  12. oracle 脚本怎么写,wincc与 oracle 数据通讯脚本如何写-工业支持中心-西门子中国...
  13. 分布式任务调度平台201902
  14. Win10 Outlook打不开,无法启动Microsoft Outlook。无法打开Outlook窗口。无法打开此文件夹集合。客户端操作失败
  15. 半夜撸 flap bird
  16. 初学jQuery Easy UI的总结
  17. 【前端面试题】01—42道常见的HTML5面试题(附答案)
  18. GC是什么?为什么会有GC?
  19. 云效codeup使用
  20. 中国的手机支付在全球遥遥领先

热门文章

  1. 算法图解第八章笔记与习题(贪婪算法)
  2. 三阶魔方还原步骤图_3阶魔方教程 1~7步骤,三阶魔方顶层还原图解
  3. oracle 方法函数,执行oracle函数的四种方法
  4. 【原】iphone6来了,我该做点什么(兼容iphone6的方法)
  5. 深度学习常见算法的介绍
  6. python源码剖析, 第0部分 -- 编译python
  7. 柏云服务器点歌系统IP,阿蛮歌霸网络版点歌系统安装说明.docx
  8. 微软MDT 安装与配置(一)
  9. JavaScript — json文件的读取与写入
  10. Go语言实战-golang操作MySQL