最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java爬蟲Jsoup主要類及功能使用詳解

 更新時(shí)間:2022年12月11日 11:54:31   作者:刨紅薯的小羊竿爾  
這篇文章主要為大家介紹了java爬蟲Jsoup主要類及功能使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、Jsoup的主要功能

Jsoup是一款Java 的HTML解析器,可直接解析某個(gè)URL地址、HTML文本內(nèi)容。它提供了一套非常省力的API,可通過(guò)DOM,CSS以及類似于jQuery的操作方法來(lái)取出和操作數(shù)據(jù)。

  • 從一個(gè)URL,文件或字符串中解析HTML
  • 使用DOM或CSS選擇器來(lái)查找、取出數(shù)據(jù)
  • 可操作HTML元素、屬性、文本
  • 根據(jù)安全的白名單清理用戶提交的內(nèi)容,以防止XSS攻擊
  • 輸出整潔的HTML

二、Jsoup的主要類

1. org.jsoup.Jsoup類

Jsoup類是任何Jsoup程序的入口點(diǎn),并將提供從各種來(lái)源加載和解析HTML文檔的方法。

static Connection connect(String url)創(chuàng)建并返回URL的連接。
static Document parse(File in, String charsetName)將指定的字符集文件解析成文檔。
static Document parse(String html)將給定的html代碼解析成文檔。
static String clean(String bodyHtml, Whitelist whitelist)從輸入HTML返回安全的HTML,通過(guò)解析輸入HTML并通過(guò)允許的標(biāo)簽和屬性的白名單進(jìn)行過(guò)濾。

2. org.jsoup.nodes.Document類

該類表示通過(guò)Jsoup庫(kù)加載HTML文檔??梢允褂么祟悎?zhí)行適用于整個(gè)HTML文檔的操作。

3. org.jsoup.nodes.Element類

HTML元素是由標(biāo)簽名稱,屬性和子節(jié)點(diǎn)組成。 使用Element類,您可以提取數(shù)據(jù),遍歷節(jié)點(diǎn)和操作HTML。

三、Jsoup使用

1.maven引入

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

2.加載文檔

Document document = Jsoup.connect("http://www.yiibai.com").get();
Document document = Jsoup.parse( new File( "D:/temp/index.html" ) , "utf-8" );```
String html = "<html><head><title>First</title></head><body><p>Parsed</p></body></html>";
Document document = Jsoup.parse(html);

3.解析文檔

  • 根據(jù)id查詢?cè)?getElementById
  • 根據(jù)標(biāo)簽獲取元素 getElementsByTag
  • 根據(jù)class獲取元素 getElementsByClass
  • 根據(jù)屬性獲取元素 getElementsByAttribute
// 解析文件,獲取doc對(duì)象 
Document doc = Jsoup.parse(new File("C:\\Users\\myqxin\\Desktop\\set.html"), "utf8"); 
// 1,根據(jù)id查詢?cè)?getElementById 
Element element1 = doc.getElementById("people"); 
// 2,根據(jù)標(biāo)簽獲取元素 getElementsByTag 
Element element2 = doc.getElementsByTag("span").first(); 
// 3,根據(jù)class獲取元素 getElementsByClass 
Element element3 = doc.getElementsByClass("").first(); 
// 4,根據(jù)屬性獲取元素 getElementsByAttribute 
Element element4 = doc.getElementsByAttribute("").last(); 
// 根據(jù)屬性和屬性值獲取 Element element5 = doc.getElementsByAttributeValue("abc","123").last();

4.使用選擇器獲取元素

selector選擇器概述

  • tagname:通過(guò)標(biāo)簽查找元素,比如:span
  • #id:通過(guò)ID查找元素,比如:#myqxin
  • .class:通過(guò)class名稱查找元素,比如:class_a
  • [attribute]:利用屬性查找元素,比如:[abc]
  • [attr=value]:利用屬性值查詢?cè)?,比如:[class=s_name]
  • ns|tag: 通過(guò)標(biāo)簽在命名空間查找元素,比如:可以用 fb|name 語(yǔ)法來(lái)查找 fb:name 元素
  • [attr^=value], [attr$=value], [attr*=value]: 利用匹配屬性值開頭、結(jié)尾或包含屬性值來(lái)查找元素,比如:[href*=/path/]
  • [attr~=regex]: 利用屬性值匹配正則表達(dá)式來(lái)查找元素,比如: img[src~=(?i).(png|jpe?g)]
  • *: 這個(gè)符號(hào)將匹配所有元素

Selector選擇器組合使用

  • el#id: 元素+ID,比如: div#logo
  • el.class: 元素+class,比如: div.masthead
  • el[attr]: 元素+class,比如: a[href]
  • 任意組合,比如:a[href].highlight
  • ancestor child: 查找某個(gè)元素下子元素,比如:可以用.body p 查找在"body"元素下的所有 p元素
  • parent > child: 查找某個(gè)父元素下的直接子元素,比如:可以用div.content > p 查找 p 元素,也可以用body > * 查找body標(biāo)簽下所有直接子元素
  • siblingA + siblingB: 查找在A元素之前第一個(gè)同級(jí)元素B,比如:div.head + div
  • siblingA ~ siblingX: 查找A元素之前的同級(jí)X元素,比如:h2 ~ p
  • el, el, el:多個(gè)選擇器組合,查找匹配任一選擇器的唯一元素,例如:div.masthead, div.logo

偽選擇器selectors

  • :lt(n): 查找哪些元素的同級(jí)索引值(它的位置在DOM樹中是相對(duì)于它的父節(jié)點(diǎn))小于n,比如:td:lt(3) 表示小于三列的元素
  • :gt(n):查找哪些元素的同級(jí)索引值大于n,比如: div p:gt(2)表示哪些div中有包含2個(gè)以上的p元素
  • :eq(n): 查找哪些元素的同級(jí)索引值與n相等,比如:form input:eq(1)表示包含一個(gè)input標(biāo)簽的Form元素
  • :has(seletor): 查找匹配選擇器包含元素的元素,比如:div:has(p)表示哪些div包含了p元素
  • :not(selector): 查找與選擇器不匹配的元素,比如: div:not(.logo) 表示不包含 class="logo" 元素的所有 div 列表
  • :contains(text): 查找包含給定文本的元素,搜索不區(qū)分大不寫,比如: p:contains(jsoup)
  • :containsOwn(text): 查找直接包含給定文本的元素
  • :matches(regex): 查找哪些元素的文本匹配指定的正則表達(dá)式,比如:div:matches((?i)login)
  • :matchesOwn(regex): 查找自身包含文本匹配指定正則表達(dá)式的元素
  • 注意:上述偽選擇器索引是從0開始的

5. 處理元素?cái)?shù)據(jù)

  • attr(String key)獲取和attr(String key, String value)設(shè)置屬性
  • attributes() 獲得所有屬性
  • id(),className()classNames()
  • text()獲取和text(String value)設(shè)置文本內(nèi)容
  • html()獲取和html(String value)設(shè)置內(nèi)部HTML內(nèi)容
  • outerHtml() 獲取外部HTML值
  • data()獲取數(shù)據(jù)內(nèi)容(例如scriptstyle標(biāo)簽)
  • tag()tagName()

6.操縱HTML和文本

  • append(String html), prepend(String html)
  • appendText(String text), prependText(String text)
  • appendElement(String tagName), prependElement(String tagName)
  • html(String value)

7.從元素中提取屬性,文本和HTML

在解析文檔并找到一些元素之后,您將需要獲取這些元素中的數(shù)據(jù)。

  • Element.id()
  • Element.tagName()
  • Element.className()Element.hasClass(String className)

以上就是java爬蟲Jsoup主要類及功能使用詳解的詳細(xì)內(nèi)容,更多關(guān)于java爬蟲Jsoup類功能的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java bat批處理命令啟動(dòng)jar包的操作方法

    Java bat批處理命令啟動(dòng)jar包的操作方法

    這篇文章主要介紹了JAVA bat批處理命令啟動(dòng)jar包,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • 帶你快速搞定java并發(fā)庫(kù)

    帶你快速搞定java并發(fā)庫(kù)

    本文主要介紹了java高并發(fā)寫入用戶信息到數(shù)據(jù)庫(kù)的幾種方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧,希望能給你帶來(lái)幫助
    2021-07-07
  • Java 網(wǎng)絡(luò)編程socket編程等詳解

    Java 網(wǎng)絡(luò)編程socket編程等詳解

    本篇文章主要介紹了java網(wǎng)絡(luò)編程中的類的方法以及實(shí)例,需要的朋友可以參考下
    2017-04-04
  • java常用數(shù)據(jù)流應(yīng)用實(shí)例解析

    java常用數(shù)據(jù)流應(yīng)用實(shí)例解析

    這篇文章主要介紹了java常用數(shù)據(jù)流應(yīng)用實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 如何給yml配置文件的密碼加密(SpringBoot)

    如何給yml配置文件的密碼加密(SpringBoot)

    這篇文章主要介紹了如何給yml配置文件的密碼加密(SpringBoot),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • SpringBoot實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)的示例代碼

    SpringBoot實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)的示例代碼

    在SpringBoot項(xiàng)目中簡(jiǎn)單使用定時(shí)任務(wù),不過(guò)由于要借助cron表達(dá)式且都提前定義好放在配置文件里,不能在項(xiàng)目運(yùn)行中動(dòng)態(tài)修改任務(wù)執(zhí)行時(shí)間,實(shí)在不太靈活?,F(xiàn)在我們就來(lái)實(shí)現(xiàn)可以動(dòng)態(tài)修改cron表達(dá)式的定時(shí)任務(wù),感興趣的可以了解一下
    2022-10-10
  • 深入分析RabbitMQ中死信隊(duì)列與死信交換機(jī)

    深入分析RabbitMQ中死信隊(duì)列與死信交換機(jī)

    這篇文章主要介紹了RabbitMQ中死信隊(duì)列與死信交換機(jī),死信隊(duì)列就是一個(gè)普通的交換機(jī),有些隊(duì)列的消息成為死信后,一般情況下會(huì)被RabbitMQ清理,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • Springboot通過(guò)配置WebMvcConfig處理Cors非同源訪問(wèn)跨域問(wèn)題

    Springboot通過(guò)配置WebMvcConfig處理Cors非同源訪問(wèn)跨域問(wèn)題

    這篇文章主要介紹了Springboot通過(guò)配置WebMvcConfig處理Cors非同源訪問(wèn)跨域問(wèn)題,關(guān)于Cors跨域的問(wèn)題,前端有代理和jsonp的常用方式解決這種非同源的訪問(wèn)拒絕策略
    2023-04-04
  • 詳解JAVA中priorityqueue的具體使用

    詳解JAVA中priorityqueue的具體使用

    這篇文章主要介紹了詳解JAVA中priorityqueue的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java通過(guò)正則表達(dá)式獲取字符串中數(shù)字的方法示例

    Java通過(guò)正則表達(dá)式獲取字符串中數(shù)字的方法示例

    最近工作中遇到了一個(gè)需求,需要利用java獲取字符串中的數(shù)字,嘗試幾種方法后發(fā)現(xiàn)利用正則表達(dá)式實(shí)現(xiàn)最為方法,下面這篇文章就主要介紹了Java通過(guò)正則表達(dá)式獲取字符串中數(shù)字的方法,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考下。
    2017-03-03

最新評(píng)論

视频| 鄂尔多斯市| 遵义市| 元江| 岢岚县| 蓝山县| 井陉县| 定陶县| 石狮市| 富源县| 隆德县| 鄯善县| 巫山县| 新余市| 襄垣县| 舒城县| 临西县| 镇原县| 梅州市| 沾化县| 嘉义市| 邵阳市| 麻栗坡县| 庆元县| 湘西| 青阳县| 云浮市| 贵州省| 胶州市| 萨迦县| 科技| 时尚| 教育| 延安市| 海盐县| 滨海县| 吉隆县| 株洲市| 将乐县| 关岭| 凤台县|