写在前面,本文将详细介绍学霸数据处理项目中的数据处理网页与后台函数,以及c#代码中每一个方法的意义及其一些在运行方面需要注意的细节,供开发人员使用,开发人员在阅读相关方法说明时请参照相关代码,对于本文中的错误和疏漏对您造成的不便深表歉意。

一、VisitRemoteServer.cs

  此文件隶属于工程VisitRemoteServer,用途是访问远程服务器,将文件从远程服务器上下载到本地和 将本地文件上传到远程服务器,此文件主要用于生成dll并供php调用,其主要作用是将本地修改的control2.json(控制爬虫的文件)上传到爬虫所在的服务器变为control.json ,以及在远程服务器上的文件(state.json)(用于显示爬虫运行状况),下载到本地变为(state2.json)。整个C#工程是一个class library工程,详细的生成dll的过程见https://zhidao.baidu.com/question/1173763976976599699.html 或http://www.piaoyi.org/php/PHP-C-dll.html不再 缀续,但需要注意的是,最后在生成com组件以及注册成全局com组件的时候,如果使用vs自带的开发者工具命令行,会显示权限不足,使用管理员权限的命令行,在使用上述网址中的命令的时候,会显示无此命令,如若出现此类问题,可采用如下解决办法,使用管理员权限的命令行,切换到dll所在目录输入如下指令

具体的目录可能因配置不同而有所差异,但目录结构应该类似 ,如此便解决了这个问题,但要此时想在php中使用如下dll中的函数依旧会有问题,我所使用的服务器框架时wamp框架,在安装目录下找到AppServ\php5\php.ini文件,使用文本编辑工具打开它,在末尾添加

之后重启apache服务,即可在php中调用dll中函数了,为了测试函数的正确性,下面介绍如下代码

二、Crawler.php

  此文件主要是对爬虫的操作和状态的检测。

  1)getState中首先new了一个COM然后调用了之前dll写好的getFromNetWorkConnection函数,如若返回true,代表远程的state.json已经下载,此时读取本地state2.json(即为远程的state.json)并返回内容、

  2)setState中首先将传入的字符串写进control2.json中,然后new com并调用setFromNetWorkConnection将文件上传从而实现对爬虫的操作 。之后将control2.json文件的内容返回是为了在网页上及时响应用户请求。

  需要注意的是,C#代码中使用到的技术是虚拟磁盘技术,简单来讲就是把远程服务器视为本地的X盘,从而对其进行操作,其中的一个问题是,传入的参数远程路径一定具有唯一性代表性,本地路径一定存在,否则会报错,可以通过错误编号编号查找错误原因。

三、DownloadFile.cs

  此文件与VisitRemoteServer.cs文件类似,此文件多了 一个deleteFileFromLocal方法,此工程并不是为了生成class library,而是为了java程序使用,c#程序如何由java程序调用请参照另一位小组成员博客,不再缀续。此方法主要是在数据处理过程前,需要将远程服务器 中的文件先下载到本地,然后进行处理,处理后在删除本地临时文件时使用。

四、setCrawler.php

  此文件主要是由crawlerjs.js调用,然后间接调用Crawler.php中的setState方法

五、getCrawler.php  

  此文件主要是由crawlerjs.js调用,然后间接调用Crawler.php中的getState方法

六、DataProcessing.php

  此文件主要由DataProcessing.js调用。

  1)getState方法获取数据处理程序当前运行状态,就是读取state.json文件中的内容。

  2)restart方法会判断当前数据处理程序是否处于运行状态,如果正在运行,则返回当前状态,不执行任何操作,否则,设置control.json为既可以运行,同时在运行前清除数据库中的文件处理标志位,最后运行java程序。

  3)start方法,和restart方法类似,只不过它不会在运行前清除数据库中的文件处理标志位

  4)myEnd方法,用于关闭数据处理程序,即将control.json文件中allowOpen置为false

  文件中的switch语句会根据输入参数不同调用不同的处理函数,执行不同的操作,返回不同的值。

七、crawler.js

  该文件用于对crawler.html文件中操作的响应。

  1)isExistWeb函数用于判断该网页是否正在爬取中而不需要再度添加到候选列表中。

  2)isExistKW函数用于判断该关键词 是否正在爬取中而不需要再度添加到候选列表中。

  3)webFileSelect webFileSelected图片按钮选文件打开文件夹的一般格式函数,获取文件完整路径通过ajax同步通信获取到文件内容,并将解析处理完毕后的内容储存到control2.json文件上传,从而改变爬虫状态。

  4)kWFileSelect kWFileSelected和上述原理相同

  5)getFullPath获取对象的完整路径,根据不同的浏览器调用不同的函数获取完整路径,但由于浏览器处于对个人文件安全的保密需要,以firefox为例,这个完整路径并不是正常的绝对路径,而是一串乱码,但其含义确实是文件完整路径。

  6)start开始爬虫,即 打开设置爬虫数的界面

  7)confirm确认爬虫数,即将网页上显示的爬虫数存储到 control2.json文件中并上传。以及当输入爬虫数不合法时会在界面上显示一些异常信息。

  8)stop关闭爬虫,其实是将爬虫个数限制为0,待所有已运行线程结束后,整个爬虫进入循环等待状态。

  9)addWeb添加网址的方法,对的话会作为新的种子网址加入到候选列表,否则显示错误信息

  10)addKeyWord添加关键词的方法,对的话会作为新的种子关键词加入到候选列表,否则显示错误信息 

  11)removeErrorInfo移除错误信息

  12)delWeb删除一个候选网址

  13)delKeyWord删除一个候选关键词

  14)MyAutoRun2自动运行并实时更新爬虫的运行情况。

  15)stateChanged_2是MyAutoRun2函数的回调函数,主要作用是根据返回信息实时更新爬虫的运行情况并显示在网页上

  16)LoadWS网页刚开始打开时初始化网址列表和关键词列表。

  17)stateChanged_WS是 LoadWS的回调 函数,主要作用是根据返回更新爬虫的网址列表和关键词列表并显示在网页上。

  18)String.prototype.temp字符串匹配和替换函数。

八、DataProcessing.js

  此文件主要由datahandler.html和crawler.html引用

  1)MyAutoRun是自动运行函数,实时发送数据处理程序运行情况查询请求

  2)begin发送开启 数据处理程序请求

  3)rebegin发送重启数据处理程序请求

  4)end发送关闭程序请求

  5)stateChanged获取数据处理程序运行现状并展示在网页上。

  6)divide字符串除法,将字符串转化为数字相除,用于进度条的长度计算。

  7)stateChanged_end结束状态检查,如果结束失败则会继续发出结束请求。

  8)GetXmlHttpObject获取xmlhttp对象用于网页前后端交互。

九、login.js

  此文件主要由datahandler.html和crawler.html引用

  即 为初始时登陆交互页面所需要的登陆框

  1)login检查登陆信息,账户,密码是否正确,错误则提出错误信息,正确则退出登陆框

  2)removeErrorInfo移除错误信息

  3)showlogin判断当前是否处于登陆状态,如果不是,则弹出登陆框

  4)gotoDataHandler切换到数据处理界面

  5)gotoCrawler切换到爬虫界面

  6)setCookie写入cookie

  7)getCookie根据keyword获取关键词信息

  8)delCookie删除cookie

十、运行准备

  将所有文件放到对应目录下后,即可以运行程序了,文件对应目录如下,

  本地服务器:(10.2.28.79)

    数据处理程序(***.jar),state.json,control.json,state2.json,control2.json均放到Appserv/www/datahandle/console目录下

  远程服务器:(10.2.28.78)

    爬虫(***.jar),state.json,control.json,放到crawler.php文件中getState和 setState中的第一个参数(远程文件目录)的文件夹下。

十一、使用说明

  

登陆界面:用户名为lwls,密码为123456

数据处理界面,显示各种文件信息,以及线程爬取信息,该界面总共有三个按钮,restart为重启,即清空数据库所有文件处理标示,重新开始处理,continue为继续,即接着处理数据库中文件标示为未处理的文件,pause为停止数据处理程序。

爬虫控制界面,使用左侧的导航栏可以在爬虫控制界面和数据处理界面之间切换,对于爬虫界面 而言,start是开启爬虫,stop是关闭爬虫,下方的添加网址和添加关键词功能可以在输入框内键入,然后按

按钮即可,也可以批量添加,使用按钮选择文件添加,需要注意的是,添加的文件要符合json格式,例如添加网页为{"web":[{"URL":"http://stackoverflow.com"}]}添加关键词为 {"keyWord":[{"word":"A"}]} 

 当点击 开始按钮时会弹出如下对话框,输入正确的数字点击确定就会执行,否则就会弹出报错信息。

学霸数据处理项目之数据处理网页以及后台以及C#代码部分开发者手册的更多相关文章

  1. 数据处理项目Postmortem

    数据处理项目Postmortem 1. 设想和目标 1)目标我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的项目是学霸系统PipeLine,软件主要解决学霸系 ...

  2. 微软开源大规模数据处理项目 Data Accelerator

    微软开源了一个原为内部使用的大规模数据处理项目 Data Accelerator.自 2017 年开发以来,该项目已经大规模应用在各种微软产品工作管道上. 据微软官方开源博客介绍,Data Accel ...

  3. DoNet开源项目-基于jQuery EasyUI的后台管理系统

    博主在业余时间开发了一个简单的后台管理系统,其中用到了 jQuery EasyUI 框架,上次分享过系统布局,参考文章:jQuery EasyUI 后台管理系统布局分享,目前已完成系统的整体框架的搭建 ...

  4. 8人/天,小记一次 JAVA(APP后台) 项目改造 .NET 过程(后台代码已完整开源于 Github)

    Github: https://github.com/iccb1013/Jade.Net 我们只消耗了8人/天的时间,完成了全部工作,基于我们 Jade.Net 的开源后台代码,任何小规模的后台管理系 ...

  5. gin项目部署到服务器并后台启动

    前言 我们写好的gin项目想要部署在服务器上,我们应该怎么做呢,接下来我会详细的讲解一下部署教程. 1.首先我们要有一台虚拟机,虚拟机上安装好go框架. 2.将写好的项目上传到虚拟机上. 3.下载好项 ...

  6. SSM 项目从搭建爬坑到 CentOS 服务器部署 - 速查手册

    SSM 项目从搭建爬坑到 CentOS 服务器部署 - 速查手册 提示: (1)CSDN 博客左边有操作工具条上有文章目录 (2)SSM 指 Spring,Spring MVC,MyBatis Mav ...

  7. VS2013中web项目中自动生成的ASP.NET Identity代码思考

    vs2013没有再分webform.mvc.api项目,使用vs2013创建一个web项目模板选MVC,身份验证选个人用户账户.项目会生成ASP.NET Identity的一些代码.这些代码主要在Ac ...

  8. ASP.NET后台执行JS代码

    1. 用Response.Write方法 代码如下:Response.Write("<script type='text/javascript'>alert("XXX& ...

  9. discuz论坛apache日志hadoop大数据分析项目:清洗数据核心功能解说及代码实现

    discuz论坛apache日志hadoop大数据分析项目:清洗数据核心功能解说及代码实现http://www.aboutyun.com/thread-8637-1-1.html(出处: about云 ...

随机推荐

  1. 【C#】 知乎用户网络爬虫

    目的 由一个种子用户出发,抓取相关的关注者和被关注者,然后再延伸开抓取更多的相关用户,以便后期进行数据分析. 拓扑图 开发工具 编程语言:C# 数据库:SqlServer 2008 R2 程序架构 流 ...

  2. Linux之CentOS 常用命令

    软件安装:安装软件:yum install <名称>移除软件:yum remove <名称>安装软件包:rpm -ivh <包全名>安装ifconfig: yum ...

  3. java返回一个简单的日历

    import java.text.*; //首先得导包 import java.util.*; public class hw2 { /** * 计算日期差 返回的天数 * @param dstr1 ...

  4. 要将 ASP.NET 访问权限授予某个文件,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。

    找到该文件所在文件夹,右键属性,安全选项卡,添加-aspnet用户,并设置其权限为完全控制.如果还是不行,就添加一个Everyone用户并赋予完全控制权限windows server 2008中IIS ...

  5. git stash和git stash pop

    git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个comm ...

  6. Multiple annotations found at this line

    Multiple annotations found at this line 在使用MyEclipse的时候,通过MVN导入项目时候,webapp下面的JSP页面报了如下的错误: 这种情况通常的原因 ...

  7. SpringMVC介绍之Validation

    对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证.SpringMVC自身对数据在服务端的校验有一个比较好的支持,它能将我们提 ...

  8. http状态码详解

    1 网址协议不支持的协议. 2 检测器内部错误. 3 网址格式不正确. 5 无法连接到代理服务器. 6 无法连接到服务器或找不到域名. 7 连接服务器失败. 28 操作超时.可能原因:页面执行时间过长 ...

  9. php文字、图片水印功能函数封装

    一直在做有关php文字图片上传方面的工作,所以把此功能函数整理了一次,现在分享给大家. <?php class image { var $g_img; var $g_w; var $g_h; v ...

  10. *cf.4 贪心

    D. Kostya the Sculptor time limit per test 3 seconds memory limit per test 256 megabytes input stand ...