Java Jsoup爬虫入门
一、了解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爬虫入门相关推荐
- Java+Jsoup爬虫小红书
源码链接:https://pan.baidu.com/s/1oOAxJqSMCyVJPNv-iAYW7A 提取码:1co9 Java+Jsoup爬虫小红书,微博,B站 爬取地址:https://www ...
- Java+Jsoup爬虫微博
源码链接:https://pan.baidu.com/s/1oOAxJqSMCyVJPNv-iAYW7A 提取码:1co9 Java+Jsoup爬虫小红书,微博,B站 爬取地址:https://wei ...
- java使用jsoup爬虫入门
一.maven项目里pom添加jsoup依赖 <dependency><groupId>org.jsoup</groupId><artifactId>j ...
- Java网络爬虫入门:第01课:网络爬虫原理
引言 随着互联网的迅速发展,网络资源越来越丰富,信息需求者如何从网络中抽取信息变得至关重要.目前,有效的获取网络数据资源的重要方式,便是网络爬虫技术.简单的理解,比如您对百度贴吧的一个帖子内容特别感兴 ...
- android爬虫框架jsoup,Android笔记之JSoup爬虫入门
前言 闲扯一些没用的,写这篇文章之前是有点私心的,因为之前评论某简书大v的文章是鸡汤,瞬间被拉黑,连个解释和说明的机会都没有,文章语言干涩,内容平平,于是就好奇到底是些什么样的人喜欢和吹捧这样的鸡汤作 ...
- Jsoup爬虫入门实战
一.Jsoup介绍 jsoup 是一款基于 Java 的HTML解析器,它提供了一套非常省力的API,不但能直接解析某个URL地址.HTML文本内容,而且还能通过类似于DOM.CSS或者jQuery的 ...
- Java JSOUP爬虫学习分享
昨天从狂神大佬那学习了如何用jsoup爬去网站数据,现在整理了一下给大家分享一下. 先创建一个名叫JsoupPojo的实体类用来装入数据. @Data public class JsoupPojo { ...
- 网络数据采集技术—Java网络爬虫入门与实战 书稿纠错
出版 本书即将由电子工业出版社出版. 内容纠正 更正内容有:
- 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo
简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...
- java爬虫入门_Java 网络爬虫新手入门详解
这是 Java 网络爬虫系列文章的第一篇,如果你还不知道 Java 网络爬虫系列文章,请参看Java 网络爬虫基础知识入门解析.第一篇是关于 Java 网络爬虫入门内容,在该篇中我们以采集虎扑列表新闻 ...
最新文章
- 无法执行 FunctionImport“entitys.xx”,因为未将它映射到存储函数。EF
- linux基础试卷笔试,顽石系列:Linux基础笔试
- Redis-学习笔记03【Redis持久化】
- java wait方法_java wait方法
- 安装虚拟机Centos系统并安装Docker过程记录
- git add后取消_满满干货!——Git知识总结
- 微软开始测试自己的Google Base
- “迭代期内无变更”与研发心理学(承诺管理,MosCoW方法)
- C结构和C++结构之间的区别是什么?
- 【万里征程——Windows App开发】使用华丽丽的字体
- P2463 [SDOI2008]Sandy的卡片
- oracle 脚本怎么写,wincc与 oracle 数据通讯脚本如何写-工业支持中心-西门子中国...
- 分布式任务调度平台201902
- Win10 Outlook打不开,无法启动Microsoft Outlook。无法打开Outlook窗口。无法打开此文件夹集合。客户端操作失败
- 半夜撸 flap bird
- 初学jQuery Easy UI的总结
- 【前端面试题】01—42道常见的HTML5面试题(附答案)
- GC是什么?为什么会有GC?
- 云效codeup使用
- 中国的手机支付在全球遥遥领先