新建一个hSpider的工程,引入前面已经建立的lib

并为其建立一个hibernate.cfg.xml的映射文件

  1. <?xml version='1.0' encoding='utf-8'?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5.  
  6. <hibernate-configuration>
  7.  
  8. <session-factory>
  9.  
  10. <!-- Database connection settings 数据库的配置 -->
  11. <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  12. <property name="connection.url">jdbc:mysql://localhost:3306/hSpider</property>
  13. <property name="connection.username">root</property>
  14. <property name="connection.password"></property>
  15.  
  16. <!-- JDBC connection pool (use the built-in) hibernate自带连接池,暂不使用 -->
  17. <!-- <property name="connection.pool_size">1</property> -->
  18.  
  19. <!-- SQL dialect 数据库方言,这里我们才爱用MySQL-->
  20. <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  21.  
  22. <!-- Enable Hibernate's automatic session context management 新功能,暂不使用 -->
  23. <!-- <property name="current_session_context_class">thread</property> -->
  24.  
  25. <!-- Disable the second-level cache 二级缓存,放置不管 -->
  26. <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
  27.  
  28. <!-- Echo all executed SQL to stdout 设置show_sql为true表示让hibernate将生成sql语句在控制台打印出来 -->
  29. <property name="show_sql">true</property>
  30.  
  31. <!-- Drop and re-create the database schema on startup 是否让hibernate自动为我们创建表 -->
  32. <!-- <property name="hbm2ddl.auto">update</property> -->
  33.  
  34. <mapping resource="hibernateSpider/edNews.hbm.xml"/> <!-- 这里是将需要mapping的文件进行再次声明 -->
  35.  
  36. </session-factory>
  37.  
  38. </hibernate-configuration>

新建`hSpider`包依次点击打开HibernateSpider->右键src->New->Package
新建`edNews`类依次点击打开HibernateSpider->src->hSpider->New->Class

  1. public class edNews {
  2. private int id;
  3. private String ednews;
  4.  
  5. public int getId() {
  6. return id;
  7. }
  8. public void setId(int id) {
  9. this.id = id;
  10. }
  11.  
  12. public String getNews(){
  13. return ednews;
  14. }
  15.  
  16. public void setNews(news ednews){
  17. this.ednews = ednews.ednews;
  18. }
  19. }

edNews

并为其新建一个edNews.hbm.xml映射文件(必须跟edNEws在同一个包中)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5.  
  6. <hibernate-mapping>
  7. <class name="hibernateSpider.edNews" table="ednews">
  8. <id name="id" type="int">
  9. <column name="id" />
  10. <generator class="increment" />
  11. </id>
  12. <property name="news" type="string">
  13. <column name="news" length="255" />
  14. </property>
  15.  
  16. </class>
  17. </hibernate-mapping>

新建一个news类(用于显示)

  1. public class news {
  2.  
  3. public String ednews;
  4.  
  5. // 构造方法初始化数据
  6. public news() {
  7. ednews = "";
  8. }
  9.  
  10. @Override
  11. public String toString() {
  12. return "公告:" + ednews + "\n";
  13. }
  14. }

News

新建一个Spider类,这个是爬虫代码的实现

  1. package hibernateSpider;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.InputStreamReader;
  5. import java.net.URL;
  6. import java.net.URLConnection;
  7. import java.util.ArrayList;
  8. import java.util.regex.Matcher;
  9. import java.util.regex.Pattern;
  10.  
  11. public class Spider {
  12. public static String SendGet(String url) {
  13. // 定义一个字符串用来存储网页内容
  14. String result = "";
  15. // 定义一个缓冲字符输入流
  16. BufferedReader in = null;
  17.  
  18. try {
  19. // 将string转成url对象
  20. URL realUrl = new URL(url);
  21. // 初始化一个链接到那个url的连接
  22. URLConnection connection = realUrl.openConnection();
  23. // 开始实际的连接
  24. connection.connect();
  25. // 初始化 BufferedReader输入流来读取URL的响应
  26. in = new BufferedReader(new InputStreamReader(
  27. connection.getInputStream(), "UTF-8"));
  28. // 用来临时存储抓取到的每一行的数据
  29. String line;
  30. while ((line = in.readLine()) != null) {
  31. // 遍历抓取到的每一行并将其存储到result里面
  32. result += line;
  33. }
  34. } catch (Exception e) {
  35. System.out.println("发送GET请求出现异常!" + e);
  36. e.printStackTrace();
  37. }
  38. // 使用finally来关闭输入流
  39. finally {
  40. try {
  41. if (in != null) {
  42. in.close();
  43. }
  44. } catch (Exception e2) {
  45. e2.printStackTrace();
  46. }
  47. }
  48. return result;
  49.  
  50. }
  51.  
  52. public static ArrayList<news> GetNews(String content) {
  53. // 预定义一个ArrayList来存储结果
  54. ArrayList<news> results = new ArrayList<news>();
  55. // 用来匹配标题
  56. Pattern questionPattern = Pattern.compile("ggtz/\\d{4}.shtml.+?>(.+?)<");
  57. Matcher questionMatcher = questionPattern.matcher(content);
  58. // 用来匹配url,也就是问题的链接
  59. Pattern urlPattern = Pattern.compile("ggtz/\\d{4}.shtml.+?>(.+?)<");
  60. Matcher urlMatcher = urlPattern.matcher(content);
  61.  
  62. // 问题和链接要均能匹配到
  63. boolean isFind = questionMatcher.find() && urlMatcher.find();
  64.  
  65. while (isFind) {
  66. // 定义一个news对象(公告对象)来存储抓取到的信息
  67. news newsTemp = new news();
  68. newsTemp.ednews= questionMatcher.group(1);
  69.  
  70. // 添加成功匹配的结果
  71. results.add(newsTemp);
  72. // 继续查找下一个匹配对象
  73. isFind = questionMatcher.find() && urlMatcher.find();
  74. }
  75. return results;
  76. }
  77.  
  78. }

Spider

最后,测试一下结果

  1. public class MainTest {
  2.  
  3. public static void main(String[] args) {
  4.  
  5. // 定义即将访问的链接
  6.  
  7. String url = "http://jwc.gdut.edu.cn/";
  8. // 访问链接并获取页面内容
  9. String content = Spider.SendGet(url);
  10. // 获取该页面的所有的命题对象
  11. ArrayList<news> myNews = Spider. GetNews(content);
  12. // 打印结果
  13. for(int i = 0; i < myNews.size(); i++){
  14. System.out.println(myNews.get(i));
  15.  
  16. edNews aNew = new edNews() ;//新建我们需要存储的类对象,并且设置其对象的一些属性
  17. aNew.setId(i);
  18. aNew.setNews(myNews.get(i));
  19.  
  20. {
  21. //Configuration主要用以读取配置文件
  22. Configuration cfg = new Configuration();
  23. SessionFactory sf = cfg.configure().buildSessionFactory();
  24. //buildSessionFactory();得到一个创建Session的工场
  25. Session ss = sf.openSession();
  26. ss.beginTransaction();//OK,将操作放入事务中
  27. ss.save(aNew);//保存你的对象
  28. ss.getTransaction().commit();//得到事务并提交
  29.  
  30. ss.close();//Session关闭
  31. sf.close();//工厂关闭
  32.  
  33. }
  34. }
  35. }
  36. }

MainTest

玩玩Hibernate(二)hibernate-spider爬虫~~的更多相关文章

  1. Spring整合Hibernate 二 - 声明式的事务管理

    Spring大战Hibernate之声明式的事务管理 Spring配置文件: 添加事务管理类的bean: <bean id="txManager" class="o ...

  2. Hibernate基础学习(二)—Hibernate相关API介绍

    一.Hibernate的核心接口      所有的Hibernate应用中都会访问Hibernate的5个核心接口.      (1)Configuration接口: 配置Hibernate,启动Hi ...

  3. Hibernate二次学习一----------Hibernate简单搭建

    因为博客园自带的markdown不太好用,因此所有markdown笔记都使用cmd_markdown发布 Hibernate二次学习一----------Hibernate简单搭建: https:// ...

  4. 一起学习Hibernate: Hibernate01 —— Hibernate的概述与入门案例

    一 Hibernate的介绍 1 让我们从JDBC与替代它的框架Hibernate进行一下对比. 1.1 JDBC的缺点 1) 代码结构繁琐.每次书写sql语句操作数据库都得需要很多步; 2) 是面向 ...

  5. spider 爬虫文件基本参数(3)

    一 代码 # -*- coding: utf-8 -*- import scrapy class ZhihuSpider(scrapy.Spider): # 爬虫名字,名字唯一,允许自定义 name ...

  6. Hibernate之Hibernate环境搭建

    Hibernate之Hibernate环境搭建 一.Hibernate环境搭建的步骤 1.添加Hibernate && SQLServer 的Jar antlr-2.7.7.jar d ...

  7. 问题Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not found解决方法

    问题Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not fo ...

  8. Hibernate笔记——Hibernate介绍和初次环境配置

    Hibernate简介 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate ...

  9. org.hibernate.HibernateException: /hibernate.cfg.xml not found等三个问题

    初次配置hibernate在myeclipse上: 出现三个问题,怎么都不好使,比对代码,没有问题,查看路径还是没有问题: 1.org.hibernate.HibernateException: /h ...

  10. 【hibernate】Hibernate中save, saveOrUpdate, persist, merge, update 区别

    Hibernate Save hibernate save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思.我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的原 ...

随机推荐

  1. apache的MPM机制-prefork

    apache是基于模块化设计的. 关于基础的服务,也采用了模块化的设计,但是这个模块是具有排他性的,同一时间只能有一个得到调用. MPM模块(multi processing module) 多处理模 ...

  2. git 彩色显示当前branch

    环境: fedora 20 $ curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt. ...

  3. 《APUE》第三章笔记(1)

    以下内容是我看<APUE>第二版第三章的笔记,有错还希望指出来,谢谢. unbuffered I/O,跟buffered I/O相对,buffered I/O就是 ISO C标准下的标准输 ...

  4. google+ 登录API 使用 javascript sdk 快速入门 (图解)

    准备工作: 打开Google API 控制台 : https://code.google.com/apis/console 点击 My Project (我的项目) 按照图示流程,您将完成一个goog ...

  5. word中几个好用的宏代码(立方米上标、关闭样式自动更新、删除无效样式、表格加粗边框、宋体引号)

    Sub 替换立方米() With Selection.Find .Text = "m3" .Replacement.Text = "mm3" .Forward ...

  6. What is Windows Clustering

    A cluster is a group of independent computer systems, referred to as nodes, working together as a un ...

  7. ACM竞赛常用STL(二)之STL--algorithm

    <algorithm>无疑是STL 中最大的一个头文件,它是由一大堆模板函数组成的.下面列举出<algorithm>中的模板函数: adjacent_find / binary ...

  8. 如何让U盘支持大于4G的文件

    U盘通常是FAT(*)格式,不能支持大于4G的文件.为了实现这个目的,通常可以把U盘格式化成NTFS或者exFAT,这两种文件系统都支持大于4G的文件. 一.格式化成NTFS第一步首先我们把优盘插入电 ...

  9. JavaScript高级之闭包的概念及其应用

    主要内容: 什么是闭包 闭包使用的一般模式 闭包都能做些什么 本文是我的JavaScript高级这个系列中的第二篇文章. 在这个系列中,我计划分析说明 一下JavaScript中的一些常用的而又神秘的 ...

  10. 数据采集服务提供商,ip提供商 里面有些不错的基础数据

    http://user.qzone.qq.com/1649677458 这家公司的爬虫应该挺牛的 !@#!#!~#¥¥¥@@http://www.site-digger.com/