基于JavaWeb的网站图片爬虫系统

资源下载地址:https://download.csdn.net/download/sheziqiong/85811020
资源下载地址:https://download.csdn.net/download/sheziqiong/85811020
目 录
1 前 言 1
2 系统概述 2
2.1 课题背景与意义 2
2.1.1 课题开发背景 2
2.1.2 课题开发意义 2
2.2 课题开发工具 3
2.2.1 JAVA和JSP技术简介 3
2.2.2 Tomcat 6.0服务器架构 4
2.2.3 MyEclipse介绍 5
2.2.4总体开发 6
2.3 开发及运行环境 6
3 系统分析 8
3.1 系统概述 8
3.2 系统功能分析 8
3.2.1 可行性分析 8
3.2.2 具体功能分析 8
3.3搜索引擎的分类 9
l、全文索引式搜索引擎 9
2、垂直搜索引擎 9
3、元搜索引擎 9
4、目录索引式搜索引擎 9
5、其他非主流搜索引擎形式: 10
4 系统设计 10
4.1 数据库设计 10
4.1.1 数据库总体设计 10
4.1.2 数据库逻辑设计 11
4.2 系统总体设计 14
4.2.1 总体设计 14
4.2.2 系统逻辑处理 14
4.3 功能设计 15
4.3.1 网站登录页 15
4.3.2 系统界面 16
4.3.3 系统配置 17
5 系统实现与调试 18
5.1 系统实现概论 18
5.2 系统功能实现 18
5.2.1 文件结构图 18
5.2.2 文件详细结构图 20
5.3 关键技术实现 20
5.3.1 web.xml 20
5.3.2 数据库db_shopSystem连接部分 22
5.3.3 定时任务扫秒xml文件获取爬虫接口数据 23
5.4 调试过程中的常见错误 24
5.4.1 JDK配置错误 24
5.4.2 SQL空指针异常 25
5.4.3 数据库连接错误 25
6 结 论 26
致 谢 27
参 考 文 献 28
3 系统分析
3.1 系统概述
传统的网络爬虫技术主要应刷于抓取静态Web网页l 31.随着AJAX/Web2.0的流行,如何抓取AJAX等动态页面成了搜索引擎急需解决的问题,因为AJAX
颠覆了传统的纯HTTP请求/响应协议机制,如果搜索引擎依旧采用“爬”的机制,是无法抓取到AJAX页面的有效数据的。AJAX采用了JavaScript驱动的异步请求/响应机制.以往的爬虫们缺乏JavaScript语义上的理解.基本上无法模拟触发JavaScript的异步调用并解析返回的异步回渊逻辑和内容另外.在AJAX的应用中,JavaScript会对D0M结构进行大量变动,甚至页面所有内容都通过JavaScript直接从服务器端读取并动态绘制出来。这对习惯了D0M结构相对不变的静态页面简直是无法理解的由此可以看出.以往的爬虫是基于协议驱动的,而对于AJAX这样的技术,所需要的爬虫引擎必须是基于事件驱动的。要实现事件驱动,首先需要解决JavaScript的交互分析和解释的问题。
本设计主要研究网络爬虫程序的设计与实现,实现简单的可在后台自动运行的爬虫程序。爬取各个网站并下载图片到服务器,展示图片,图片展示应用瀑布流,响应用户请求。
3.2 系统功能分析
3.2.1 可行性分析
(1) 技术可行性:本系统的配置。
(2) 经济可行性:系统的配置,不需要昂贵的 EJB 服务器,开发成本低。
(3) 操作可行性:访问系统的主要有两种:用户,管理员。目前资源的利用情况和可操作性,只需少量的对数据库中的表的直接操作就可以实现系统的完整、稳定的运行,不会造成系统的巨大压力。
3.2.2 具体功能分析
目前,比较常见的网络爬虫搜索策略有以下三种:
1、广度优先搜索策略。其主要思想是,由根节点开始,首先遍历当前层次的搜索,然后才进行下一层的搜索,依次类推逐层的搜索。这种策略多用在主题爬虫上,因为越是与初始URL距离近的网页,其具有的主题相关性越大。
2、深度优先搜索策略。这种策略的主要思想是,从根节点出发找出叶子节点,以此类推。在一个网页中,选择一个超链接,被链接的网页将执行深度优先搜索,形成单独的一条搜索链,当没有其他超链接时,搜索结束。
3、最佳优先搜索策略。该策略通过计算URL描述文本与目标网页的相似度,或者与主题的相关性,根据所设定的阈值选出有效URL进行抓取。

3.3搜索引擎的分类
搜索引擎的分类主要有以下几种:
l、全文索引式搜索引擎
全文索引式搜索引擎是现今主流的搜索引擎,国内代表有Baidu,国外代表
有Google。全文索引式搜索引擎主要是将从因特网上提取到的与每个网页相关
的基本信息集中起来建立一个镜像数据库,借助检索数据库得到与查询条件相匹
配的全部记录,并按照一定的排列顺序呈现给用户。
全文搜索引擎按检索结果的来源角度来分,具体可以分为以下两大类:一类
搜索引擎其自身具备相对独立的网页提取、页面索引及检索系统(Indexer),也
具备独立的爬虫(Crawler)、“机器人"(Robot)程序或者“蜘蛛"(Spider)
程序,同时还具备独立的网页数据库,通过该网页数据库可以直接从中提取检索
信息,在国内外的大型全文搜索引擎中,Baidu和Google正是此类搜索引擎的典
型代表;另一类引擎其自身并不具备完整独立的数据库,必须借助于其他搜索引
擎的页面数据库,通过对该页面数据库进行检索并提取出相关的检索信息,此类
搜索引擎的代表如Lycos。
2、垂直搜索引擎
2006年互联网上逐渐出现了一类新的搜索引擎,即垂直搜索引擎。垂直
搜索与通用的网页搜索引擎相比,它主要是设计为了服务特定的检索领域和检索需求,如影视检索、票务检索、图书检索等,其专业化服务使其在这些特定的搜索领域具有更为出色的表现。此外,垂直搜索较通用的网页搜索引擎要求相
对较低的硬件成本、面向的用户需求相对特定化、查询的方式也可以是多种多样。
3、元搜索引擎
用户通过向元搜索引擎【131输入检索请求,该搜索引擎系统可以同时通过检索多个其他搜索引擎系统的网页数据库提取相关搜索结果,并将其按特定顺序排列呈现给用户。
国内外的元搜索引擎的代表有Dogpile(http://www.dogpile.corn)、InfoSpace等,搜星是比较具有代表性的中文元搜索。元搜索引擎的检索结果按一定的排序呈现,这种排列过程有的是基于来源排列检索结果,此类代表有Dogpile;有的依据特定规则排列,如Vivisimo。
4、目录索引式搜索引擎
目录索引式搜索引擎虽然具备一定的检索功能,但并不是严格意义上的搜索
引擎,它所实现的功能主要是借助一些搜索目录或者是分类目录来划分网站链接列表。用户可以选择借助于对这些分类目录进行检索来获取所需要的相关信息和资料,而不需要通过关键词(Keywords)的检索来获取目标信息。如今,新浪、
雅虎等都是目录索引式搜索引擎的的典型代表。
5、其他非主流搜索引擎形式:
MSN Search、AOL Saerch等门户搜索引擎在提供检索服务时,由于其自身
不具备独立的网页数据库也没有独立的分类目录,因而这类引擎的检索结果只能借助于其他搜索引擎来完成。集合式搜索引擎与元搜索引擎有着一定相似之处,也存在很大的差异,诸如它并不能同时对多个大型的全文搜索引擎系统进行同步检索,而需要由用户在其提供的常用搜索引擎列表中手动确定一个搜索引擎,然后对该搜索引擎中的数据库进行检索,HotBot就是此类搜索引擎的代表。
免费链接列表(Free For All Links,FFA)通常只提供滚动链接条目,少部分存在着比较简单的分类目录。
5.3 关键技术实现
5.3.1 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<servlet>
		<description>
			This is the description of my J2EE component
		</description>
		<display-name>
			This is the display name of my J2EE component
		</display-name>
		<servlet-name>LoginServlet</servlet-name>
		<servlet-class>com.servlet.LoginServlet</servlet-class>
	</servlet>
	<servlet>
		<description>
			This is the description of my J2EE component
		</description>
		<display-name>
			This is the display name of my J2EE component
		</display-name>
		<servlet-name>XitongshezhiServlet</servlet-name>
		<servlet-class>com.servlet.XitongshezhiServlet</servlet-class>
	</servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>UserServlet</servlet-name>
    <servlet-class>com.servlet.UserServlet</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>XinwenServlet</servlet-name>
    <servlet-class>com.servlet.XinwenServlet</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>FaguiServlet</servlet-name>
    <servlet-class>com.servlet.FaguiServlet</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>QicheServlet</servlet-name>
    <servlet-class>com.servlet.QicheServlet</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>PachongServlet</servlet-name>
    <servlet-class>com.servlet.PachongServlet</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>LiuyanServlet</servlet-name>
    <servlet-class>com.servlet.LiuyanServlet</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>PinglunServlet</servlet-name>
    <servlet-class>com.servlet.PinglunServlet</servlet-class>
  </servlet>
  <servlet-mapping>
		<servlet-name>LoginServlet</servlet-name>
		<url-pattern>/LoginServlet</url-pattern>
	</servlet-mapping>
  <servlet-mapping>
    <servlet-name>UserServlet</servlet-name>
    <url-pattern>/UserServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>XinwenServlet</servlet-name>
    <url-pattern>/XinwenServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FaguiServlet</servlet-name>
    <url-pattern>/FaguiServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>QicheServlet</servlet-name>
    <url-pattern>/QicheServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>PachongServlet</servlet-name>
    <url-pattern>/PachongServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>LiuyanServlet</servlet-name>
    <url-pattern>/LiuyanServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>PinglunServlet</servlet-name>
    <url-pattern>/PinglunServlet</url-pattern>
  </servlet-mapping>
 
   


	<welcome-file-list>
		<welcome-file>login.jsp</welcome-file>
	</welcome-file-list>
</web-app>

5.3.2 数据库db_shopSystem连接部分

public static synchronized Connection getConn() {
		try {
			Properties properties = new Properties();
			properties.load(DBConn.class.getClassLoader().getResourceAsStream("jdbc.properties"));
			String driver = properties.getProperty("jdbc.driverClassName");
			String url = properties.getProperty("jdbc.url");
			String username = properties.getProperty("jdbc.username");
			String password = properties.getProperty("jdbc.password");
			Class.forName(driver);
			conn = DriverManager.getConnection(url, username, password);
			 //conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databasename=zuoyetijiao","sa","think");
	           
		} catch (Exception e) {
		}
		return conn;
	}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
资源下载地址:https://download.csdn.net/download/sheziqiong/85811020
资源下载地址:https://download.csdn.net/download/sheziqiong/85811020

猜你喜欢

转载自blog.csdn.net/sheziqiong/article/details/125499921