日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot html页面解析之jsoup

發布時間:2025/3/12 javascript 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot html页面解析之jsoup 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目的

我們要對一個頁面進行數據抓取,并導出doc文檔

html解析器

jsoup

直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于JQuery的操作方法來取出和操作數據。

htmlparser

提供了線性和嵌套兩種方式來解析網頁,主要用于 html 網頁的轉換(Transformation) 以及網頁內容的抽取 (Extraction)。

jsoup和htmlparser對比

jsoup可以直接拿,類似jquery的選擇器一樣用起來比較好上手。htmlparser結構簡單功能強大,難上手,但是自主度高

準備doc文檔并另存為xml文件

項目圖片

pom.xml

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

操作流程

把xml文件修改名為Hibernate.ftl后拷貝文件到src/main/resources

原來xml文件

<w:body><w:p><w:pPr><w:pStyle w:val="2" /><w:jc w:val="center" /><w:rPr><w:rFonts w:hint="eastAsia" /><w:lang w:val="en-US" w:eastAsia="zh-CN" /></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" /><w:lang w:val="en-US" w:eastAsia="zh-CN" /></w:rPr><w:t>Hibernate</w:t></w:r></w:p><w:p><w:pPr><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="微軟雅黑" w:hAnsi="微軟雅黑" w:eastAsia="微軟雅黑" w:cs="微軟雅黑" /><w:b w:val="0" /><w:i w:val="0" /><w:caps w:val="0" /><w:color w:val="555555" /><w:spacing w:val="0" /><w:sz w:val="21" /><w:szCs w:val="21" /><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" /></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="微軟雅黑" w:hAnsi="微軟雅黑" w:eastAsia="微軟雅黑" w:cs="微軟雅黑" /><w:b w:val="0" /><w:i w:val="0" /><w:caps w:val="0" /><w:color w:val="555555" /><w:spacing w:val="0" /><w:sz w:val="21" /><w:szCs w:val="21" /><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" /></w:rPr><w:t>你還在為不知道怎樣正確使用Hibernate而糾結嗎</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="微軟雅黑" w:hAnsi="微軟雅黑" w:eastAsia="微軟雅黑" w:cs="微軟雅黑" /><w:b w:val="0" /><w:i w:val="0" /><w:caps w:val="0" /><w:color w:val="555555" /><w:spacing w:val="0" /><w:sz w:val="21" /><w:szCs w:val="21" /><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" /><w:lang w:val="en-US" /></w:rPr><w:t>,</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="微軟雅黑" w:hAnsi="微軟雅黑" w:eastAsia="微軟雅黑" w:cs="微軟雅黑" /><w:b w:val="0" /><w:i w:val="0" /><w:caps w:val="0" /><w:color w:val="555555" /><w:spacing w:val="0" /><w:sz w:val="21" /><w:szCs w:val="21" /><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" /></w:rPr><w:t>你還在為不知道怎樣配置映射文件而郁悶嗎</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="3" /><w:rPr><w:rFonts w:hint="eastAsia" /></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" /></w:rPr><w:t>Hibernate 系列教</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack" /><w:bookmarkEnd w:id="0" /><w:r><w:rPr><w:rFonts w:hint="eastAsia" /></w:rPr><w:t>1-枚舉單例類</w:t></w:r></w:p><w:p><w:pPr><w:rPr><w:rFonts w:hint="eastAsia" /><w:lang w:val="en-US" w:eastAsia="zh-CN" /></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" /></w:rPr><w:fldChar w:fldCharType="begin" /></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" /></w:rPr><w:instrText xml:space="preserve"> HYPERLINK &quot;http://blog.csdn.net/je_ge/article/details/53234944&quot; </w:instrText></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" /></w:rPr><w:fldChar w:fldCharType="separate" /></w:r><w:r><w:rPr><w:rStyle w:val="7" /><w:rFonts w:hint="eastAsia" /></w:rPr><w:t>http://blog.csdn.net/je_ge/article/details/53234944</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" /></w:rPr><w:fldChar w:fldCharType="end" /></w:r></w:p><w:sectPr><w:pgSz w:w="11906" w:h="16838" /><w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="851" w:footer="992" w:gutter="0" /><w:cols w:space="720" w:num="1" /><w:docGrid w:type="lines" w:linePitch="312" w:charSpace="0" /></w:sectPr> </w:body>

現在ftl文件修改地方

<w:body><w:p><w:pPr><w:pStyle w:val="2" /><w:jc w:val="center" /><w:rPr><w:rFonts w:hint="eastAsia" /><w:lang w:val="en-US" w:eastAsia="zh-CN" /></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" /><w:lang w:val="en-US" w:eastAsia="zh-CN" /></w:rPr><w:t>${title}</w:t></w:r></w:p><w:p><w:pPr><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="微軟雅黑" w:hAnsi="微軟雅黑" w:eastAsia="微軟雅黑" w:cs="微軟雅黑" /><w:b w:val="0" /><w:i w:val="0" /><w:caps w:val="0" /><w:color w:val="555555" /><w:spacing w:val="0" /><w:sz w:val="21" /><w:szCs w:val="21" /><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" /></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="微軟雅黑" w:hAnsi="微軟雅黑" w:eastAsia="微軟雅黑" w:cs="微軟雅黑" /><w:b w:val="0" /><w:i w:val="0" /><w:caps w:val="0" /><w:color w:val="555555" /><w:spacing w:val="0" /><w:sz w:val="21" /><w:szCs w:val="21" /><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" /></w:rPr><w:t>${content}</w:t></w:r></w:p><#list list as map> <w:p><w:pPr><w:pStyle w:val="3" /><w:rPr><w:rFonts w:hint="eastAsia" /></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" /></w:rPr><w:t>${map.title}</w:t></w:r></w:p><w:p><w:pPr><w:rPr><w:rFonts w:hint="eastAsia" /><w:lang w:val="en-US" w:eastAsia="zh-CN" /></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" /></w:rPr><w:fldChar w:fldCharType="begin" /></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" /></w:rPr><w:instrText xml:space="preserve"> HYPERLINK &quot;${map.title}&quot; </w:instrText></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" /></w:rPr><w:fldChar w:fldCharType="separate" /></w:r><w:r><w:rPr><w:rStyle w:val="7" /><w:rFonts w:hint="eastAsia" /></w:rPr><w:t>${map.href}</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" /></w:rPr><w:fldChar w:fldCharType="end" /></w:r></w:p></#list><w:sectPr><w:pgSz w:w="11906" w:h="16838" /><w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="851" w:footer="992"w:gutter="0" /><w:cols w:space="720" w:num="1" /><w:docGrid w:type="lines" w:linePitch="312" w:charSpace="0" /></w:sectPr> </w:body>

測試類JsoupTest

package com.jege.spring.boot;import java.io.File; import java.io.FileWriter; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map;import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;import freemarker.template.Template;/*** 獲取連接,寫出doc文件*/ @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest() public class JsoupTest {// 讀取博客信息的地址private final static String URL_ADDRESS = "http://blog.csdn.net/je_ge?viewmode=contents";// <h1>// <span class="link_title"><a href="/je_ge/article/details/53366556">// </a></span>// </h1>private Elements getLinks() throws Exception {// 新版本需要設置瀏覽器頭信息Document document = Jsoup.connect(URL_ADDRESS).userAgent("Mozilla/5.0 (Windows NT 7.0; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0").get();return document.select("h1 a");}@Testpublic void testGetLinks() throws Exception {Elements links = getLinks();for (int i = links.size() - 1; i >= 0; i--) {Element link = links.get(i);String attr = link.attr("href");String linkText = link.text();System.out.println(linkText);System.out.println(attr);}System.out.println("size:" + links.size());}@Autowiredprivate FreeMarkerConfigurer freeMarkerConfigurer;@Testpublic void writeHibernate() throws Exception {String title = "Hibernate 系列教程";String content = "Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。";Elements links = getLinks();List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();for (Element link : links) {String linkText = link.text();if (linkText.contains(title)) {Map<String, Object> map = new HashMap<String, Object>();map.put("href", "http://blog.csdn.net/" + link.attr("href"));map.put("title", linkText.replaceAll(title, ""));list.add(map);}}Collections.reverse(list);System.out.println("size:" + links.size());freeMarkerConfigurer.getConfiguration().setClassForTemplateLoading(getClass(), "/");Template template = freeMarkerConfigurer.getConfiguration().getTemplate("Hibernate.ftl");Map<String, Object> root = new HashMap<String, Object>();root.put("title", title);root.put("content", content);root.put("list", list);template.process(root, new FileWriter(new File(title + ".doc")));}}

如果感覺不錯的話記得點贊喲!!!

總結

以上是生活随笔為你收集整理的Spring Boot html页面解析之jsoup的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩在线观看不卡 | 欧美 日本 国产 | 亚州av| 天天插天天操天天干 | 欧美专区一区 | 美女狠狠干 | 成人精品三级av在线看 | 91精品久 | 99亚洲精品 | 中国一及毛片 | missav在线| 久草资源在线观看 | 成人久久一区二区 | 妺妺窝人体色www在线下载 | 扒开女人屁股进去 | 午夜国产一区 | 国产精品国产三级国产aⅴ9色 | 国产片91| 成人免费影院 | 成人性做爰aaa片免费看不忠 | 国产色婷婷一区二区三区竹菊影视 | 国产经典久久 | 麻豆蜜桃91 | 亚洲欧美一区二区三区 | 亚洲网av | 日韩免费三级 | 麻豆激情网| 国产在线二区 | 亚洲福利av | 美女隐私黄www网站动漫 | av影视在线观看 | av在线一区二区 | 香蕉av一区二区三区 | 国产在线视频网站 | 一级特黄性色生活片 | 91精品福利视频 | 日韩在线国产精品 | 免费视频网站在线观看入口 | 中文字幕资源网 | 欧美日韩黄色大片 | 激情网五月天 | 91欧美视频| 丰满少妇被猛烈进入高清播放 | 97人人爽| 国产精品久久中文字幕 | 亚洲伦理网站 | 国产精品无码专区av在线播放 | 欧美日韩三级在线 | 日韩精品一二三区 | 日韩一级免费观看 | 免费黄色a| 99精品人妻少妇一区二区 | 国产乱码一区二区 | 成人无码精品1区2区3区免费看 | 反差在线观看免费版全集完整版 | 日本网站免费观看 | 免费观看在线高清 | 亚洲毛片一区二区 | 日韩欧美国产中文字幕 | 一本一道久久a久久精品蜜桃 | 激情黄色小说网站 | 免费黄色美女网站 | xxx毛片 | 午夜一级影院 | 日韩av在线播放一区 | 视频国产在线 | 第一福利在线视频 | 国产精品无码毛片 | 一女双乳被两男吸视频 | 黑人玩弄人妻一区二区三区影院 | 日韩欧美四区 | 天堂а√在线中文在线鲁大师 | 动漫玉足吸乳羞免费网站玉足 | 超碰免费av | 午夜之声l性8电台lx8电台 | 欧美精品午夜 | 99视频网址 | 豆花免费跳转入口官网 | 91亚洲精品在线观看 | 91美女网 | 欧美性大战久久久久久久 | 九色91蝌蚪 | 日本偷拍一区 | www.狠狠艹| 中文字幕35页 | 欧美天天爽 | 特级黄色网 | 777久久久精品一区二区三区 | 乱子伦一区| 国产少妇一区二区 | 亚洲三级视频 | 国产精品久久久久久免费观看 | 成人在线观看亚洲 | 国产三级一区 | 欧洲一区在线 | 精品人妻一区二区免费 | 久久久久久久久久久久久久久久久 | 黑森林av导航 | 黄色肉肉视频 |