网站建设如何开单,企业网站有哪些企业,公众号注册入口官网,青岛的网站建设公司目的
我们要对一个页面进行数据抓取#xff0c;并导出doc文档
html解析器
jsoup
直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API#xff0c;可通过DOM#xff0c;CSS以及类似于JQuery的操作方法来取出和操作数据。
htmlparser
提供了线性和嵌套两种方…目的
我们要对一个页面进行数据抓取并导出doc文档
html解析器
jsoup
直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API可通过DOMCSS以及类似于JQuery的操作方法来取出和操作数据。
htmlparser
提供了线性和嵌套两种方式来解析网页主要用于 html 网页的转换(Transformation) 以及网页内容的抽取 (Extraction)。
jsoup和htmlparser对比
jsoup可以直接拿类似jquery的选择器一样用起来比较好上手。htmlparser结构简单功能强大难上手但是自主度高
准备doc文档并另存为xml文件 项目图片 pom.xml
dependencygroupIdorg.jsoup/groupIdartifactIdjsoup/artifactIdversion1.10.1/version
/dependency操作流程
把xml文件修改名为Hibernate.ftl后拷贝文件到src/main/resources
原来xml文件
w:bodyw:pw:pPrw:pStyle w:val2 /w:jc w:valcenter /w:rPrw:rFonts w:hinteastAsia /w:lang w:valen-US w:eastAsiazh-CN //w:rPr/w:pPrw:rw:rPrw:rFonts w:hinteastAsia /w:lang w:valen-US w:eastAsiazh-CN //w:rPrw:tHibernate/w:t/w:r/w:pw:pw:pPrw:rPrw:rFonts w:hinteastAsia w:ascii微软雅黑 w:hAnsi微软雅黑 w:eastAsia微软雅黑 w:cs微软雅黑 /w:b w:val0 /w:i w:val0 /w:caps w:val0 /w:color w:val555555 /w:spacing w:val0 /w:sz w:val21 /w:szCs w:val21 /w:shd w:valclear w:colorauto w:fillFFFFFF //w:rPr/w:pPrw:rw:rPrw:rFonts w:ascii微软雅黑 w:hAnsi微软雅黑 w:eastAsia微软雅黑 w:cs微软雅黑 /w:b w:val0 /w:i w:val0 /w:caps w:val0 /w:color w:val555555 /w:spacing w:val0 /w:sz w:val21 /w:szCs w:val21 /w:shd w:valclear w:colorauto w:fillFFFFFF //w:rPrw:t你还在为不知道怎样正确使用Hibernate而纠结吗/w:t/w:rw:rw:rPrw:rFonts w:ascii微软雅黑 w:hAnsi微软雅黑 w:eastAsia微软雅黑 w:cs微软雅黑 /w:b w:val0 /w:i w:val0 /w:caps w:val0 /w:color w:val555555 /w:spacing w:val0 /w:sz w:val21 /w:szCs w:val21 /w:shd w:valclear w:colorauto w:fillFFFFFF /w:lang w:valen-US //w:rPrw:t,/w:t/w:rw:rw:rPrw:rFonts w:hinteastAsia w:ascii微软雅黑 w:hAnsi微软雅黑 w:eastAsia微软雅黑 w:cs微软雅黑 /w:b w:val0 /w:i w:val0 /w:caps w:val0 /w:color w:val555555 /w:spacing w:val0 /w:sz w:val21 /w:szCs w:val21 /w:shd w:valclear w:colorauto w:fillFFFFFF //w:rPrw:t你还在为不知道怎样配置映射文件而郁闷吗/w:t/w:r/w:pw:pw:pPrw:pStyle w:val3 /w:rPrw:rFonts w:hinteastAsia //w:rPr/w:pPrw:rw:rPrw:rFonts w:hinteastAsia //w:rPrw:tHibernate 系列教/w:t/w:rw:bookmarkStart w:id0 w:name_GoBack /w:bookmarkEnd w:id0 /w:rw:rPrw:rFonts w:hinteastAsia //w:rPrw:t程1-枚举单例类/w:t/w:r/w:pw:pw:pPrw:rPrw:rFonts w:hinteastAsia /w:lang w:valen-US w:eastAsiazh-CN //w:rPr/w:pPrw:rw:rPrw:rFonts w:hinteastAsia //w:rPrw:fldChar w:fldCharTypebegin //w:rw:rw:rPrw:rFonts w:hinteastAsia //w:rPrw:instrText xml:spacepreserve HYPERLINK quot;http://blog.csdn.net/je_ge/article/details/53234944quot; /w:instrText/w:rw:rw:rPrw:rFonts w:hinteastAsia //w:rPrw:fldChar w:fldCharTypeseparate //w:rw:rw:rPrw:rStyle w:val7 /w:rFonts w:hinteastAsia //w:rPrw:thttp://blog.csdn.net/je_ge/article/details/53234944/w:t/w:rw:rw:rPrw:rFonts w:hinteastAsia //w:rPrw:fldChar w:fldCharTypeend //w:r/w:pw:sectPrw:pgSz w:w11906 w:h16838 /w:pgMar w:top1440 w:right1800 w:bottom1440 w:left1800 w:header851 w:footer992 w:gutter0 /w:cols w:space720 w:num1 /w:docGrid w:typelines w:linePitch312 w:charSpace0 //w:sectPr
/w:body现在ftl文件修改地方
w:bodyw:pw:pPrw:pStyle w:val2 /w:jc w:valcenter /w:rPrw:rFonts w:hinteastAsia /w:lang w:valen-US w:eastAsiazh-CN //w:rPr/w:pPrw:rw:rPrw:rFonts w:hinteastAsia /w:lang w:valen-US w:eastAsiazh-CN //w:rPrw:t${title}/w:t/w:r/w:pw:pw:pPrw:rPrw:rFonts w:hinteastAsia w:ascii微软雅黑 w:hAnsi微软雅黑 w:eastAsia微软雅黑 w:cs微软雅黑 /w:b w:val0 /w:i w:val0 /w:caps w:val0 /w:color w:val555555 /w:spacing w:val0 /w:sz w:val21 /w:szCs w:val21 /w:shd w:valclear w:colorauto w:fillFFFFFF //w:rPr/w:pPrw:rw:rPrw:rFonts w:ascii微软雅黑 w:hAnsi微软雅黑 w:eastAsia微软雅黑 w:cs微软雅黑 /w:b w:val0 /w:i w:val0 /w:caps w:val0 /w:color w:val555555 /w:spacing w:val0 /w:sz w:val21 /w:szCs w:val21 /w:shd w:valclear w:colorauto w:fillFFFFFF //w:rPrw:t${content}/w:t/w:r/w:p#list list as map w:pw:pPrw:pStyle w:val3 /w:rPrw:rFonts w:hinteastAsia //w:rPr/w:pPrw:rw:rPrw:rFonts w:hinteastAsia //w:rPrw:t${map.title}/w:t/w:r/w:pw:pw:pPrw:rPrw:rFonts w:hinteastAsia /w:lang w:valen-US w:eastAsiazh-CN //w:rPr/w:pPrw:rw:rPrw:rFonts w:hinteastAsia //w:rPrw:fldChar w:fldCharTypebegin //w:rw:rw:rPrw:rFonts w:hinteastAsia //w:rPrw:instrText xml:spacepreserve HYPERLINK quot;${map.title}quot; /w:instrText/w:rw:rw:rPrw:rFonts w:hinteastAsia //w:rPrw:fldChar w:fldCharTypeseparate //w:rw:rw:rPrw:rStyle w:val7 /w:rFonts w:hinteastAsia //w:rPrw:t${map.href}/w:t/w:rw:rw:rPrw:rFonts w:hinteastAsia //w:rPrw:fldChar w:fldCharTypeend //w:r/w:p/#listw:sectPrw:pgSz w:w11906 w:h16838 /w:pgMar w:top1440 w:right1800 w:bottom1440 w:left1800 w:header851 w:footer992w:gutter0 /w:cols w:space720 w:num1 /w:docGrid w:typelines w:linePitch312 w:charSpace0 //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?viewmodecontents;// h1// span classlink_titlea href/je_ge/article/details/53366556// /a/span// /h1private 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();ListMapString, Object list new ArrayListMapString, Object();for (Element link : links) {String linkText link.text();if (linkText.contains(title)) {MapString, Object map new HashMapString, 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);MapString, Object root new HashMapString, Object();root.put(title, title);root.put(content, content);root.put(list, list);template.process(root, new FileWriter(new File(title .doc)));}}
如果感觉不错的话记得点赞哟