eideo / Gwenson-robot

这是一个使用JAVA语言开发的应用级的分布式爬虫搜索引擎机器人

Home Page:http://www.gwenson.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Gwenson-robot爬虫机器人

这是一个使用JAVA语言开发的可分布式的爬虫机器人,利用redis的list实现匀速爬取目标,并实现了url去重和目标内容去重。其中目标内容去重是先利用word分词然后再利用simhash算法得到一个SimHashCode值,再利用抽屉原理判断海明距离从而得到相似度。注意:使用JDK1.8

[TOC]

我的项目应用部署地址

Gwenson 个人爬虫搜索引擎

该项目都用到了哪些技术?

​ spring boot、spring data redis、jsoup、word、mybatis、spring data elasticsearch、spring mvc、bootstrap、JSP等等

工程项目结构的介绍

common 模块项目是一个公共工具类依赖包模块。

项目结构介绍:

common
└─src
    └─main
      └─java
          └─com
              └─gwenson
                 └─common
                      ├─dao
                      │  └─redis
                      ├─model
                      └─utils
    

search-robot模块项目是一个基于spring boot框架的爬虫机器人模块。

项目结构介绍:

   search-robot
   └─src
       └─main
         ├─java
         │  └─com
         │      └─gwenson
         │          ├─controller
         │          ├─listener
         │          └─robot
         │              ├─cahce
         │              ├─config
         │              ├─page
         │              │  ├─dto
         │              │  ├─redis
         │              │  │  └─dao
         │              │  ├─rule
         │              │  │  ├─dao
         │              │  │  └─service
         │              │  │      └─impl
         │              │  └─service
         │              │      └─impl
         │              ├─proterty
         │              │  ├─model
         │              │  ├─redis
         │              │  │  └─dao
         │              │  └─task
         │              └─utils
         └─resources
              ├─application.properties   //启动配置
              ├─application-prod.properties  //生成环境
              ├─application-dev.properties   //测试环境
              ├─blacklist.txt			//黑名单
              ├─whitelist.txt			//白名单
              └─logback.xml			//logback日志配置

search-robot的src/main/resouces下的文件介绍

​ application.properties是项目启动的必要配置文件:

   #项目监听端口
   server.port=8081
   #项目路径
   #server.context-path=/
   #引用生配置,prod是生产,dev是测试
   spring.profiles.active=prod
   #容器启动完成后的监听类
   context.listener.classes=com.gwenson.listener.ApplicationStartup

   #是否开启代理ip,true开启,false不开启
   gwensong.robot.property.start=false
   #是否开启自动定时爬取代理ip功能,true开启,false不开启
   gwensong.robot.property.autoScheduled=false
   #自定义代理ip列表
   #gwensong.robot.property.userDefinedPath=D:/gwenson/property.txt
   gwensong.robot.property.userDefinedPath=

   #分表数,用来生成tableId
   database.table.num=64

   #设置爬虫的优先级别,广度优先为:wide;深度度优先为:depth
   gwensong.robot.search.scope=depth
   #配置白名单列表
   gwensong.robot.search.whitelistPath=/whitelist.txt
   #配置黑名单列表
   gwensong.robot.search.blacklistPath=/blacklist.txt

   #web controller启动爬虫用户名
   gwenson.robot.user.username=root
   #web controller启动爬虫密码
   gwenson.robot.user.password=123456
application-prod.properties或application-dev.properties是区分启动的环境配置,和application.properties里的spring.profiles.active=prod对应:
   profile = prod_envrimont

   #tomcat 编码设置,默认是UTF-8
   server.tomcat.uri-encoding=UTF-8
   #tomcat的启动日志logs
   server.tomcat.accesslog.directory=/gwenson/logs/search-robot/tomcat.log

   # REDIS (RedisProperties) 
   # database name   
   spring.redis.database=0
   # localhost # server host redis的地址 
   spring.redis.host=127.0.0.1
   # server password  redis的密码
   spring.redis.password=

   # connection port  redis的监听端口
   spring.redis.port=6379 
   # pool settings ...  
   spring.redis.pool.max-idle=8 
   spring.redis.pool.min-idle=0  
   spring.redis.pool.max-active=-1  
   spring.redis.pool.max-wait=-1
   spring.redis.timeout=100000

search-view模块是一个基于spring mvc的搜索引擎web门户应用

项目结构介绍:

src
├─main
│  ├─java
│  │  └─com
│  │      └─gwenson
│  │          └─search
│  │              ├─controller
│  │              ├─dao
│  │              │  ├─elasticsearch
│  │              │  └─xml
│  │              ├─filter
│  │              ├─interceptor
│  │              ├─listener
│  │              ├─model
│  │              ├─service
│  │              │  └─imp
│  │              ├─servlet
│  │              └─utils
│  ├─resources
│  │  └─spring //spring datasource位置
│  └─webapp
│      └─WEB-INF
│          ├─static
│          │  ├─conf
│          │  └─html  //首页 index.html
└──────────└─views   //结果页 search.jsp

search-view的src/main/resouces下的文件介绍

​ jdbc.properties是search-view的mysql数据库和redis连接用户和密码存放文件:

#mysql的数据库连接配置
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/search?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true
jdbc.username=root
jdbc.password=123456
jdbc.maxActive=20  
jdbc.maxIdle=10
jdbc.maxWait=4000

#Redis settings
#Redis的配置
redis.host=127.0.0.1
redis.port=6379
redis.password=
redis.maxIdle=300
redis.minIdle=10
redis.maxActive=600
redis.maxWait=1000
redis.testOnBorrow=true
redis.testOnReturn=true
redis.timeout=1000000

怎么使用?

(一) 安装maven,编译maven项目

在Gwenson-robot目录下执行mvn命令:

$ mvn clean install package -Dmaven.test.skip=true

成功会在最好出现该字样:

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] search-parent ...................................... SUCCESS [  0.400 s]
[INFO] common ............................................. SUCCESS [  2.891 s]
[INFO] search-robot ....................................... SUCCESS [  3.299 s]
[INFO] search-view ........................................ SUCCESS [ 15.059 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 22.235 s
[INFO] Finished at: 2017-12-05T17:19:21+08:00
[INFO] Final Memory: 49M/345M
[INFO] ------------------------------------------------------------------------

(二) 部署启动search-robot


1、安装redis

2、在项目src/main/resources下的application-prod.properties里的spring.redis.host= 
spring.redis.password= 
配置你redis地址和密码
 
3、执行jar运行命令启动
java -jar /gwenson/app/search-robot/search-robot-0.0.1-SNAPSHOT.ja

4、在浏览器地址执行下面url启动爬虫
http://localhost:8081/start/search?username=root&password=123456
或
curl "http://localhost:8081/start/search?username=root&password=123456"

(三) 部署启动search-view

1、安装MYSQL ​ 然后在src/main/resouces下的jdbc.properties的mysql的数据库连接配置配置上你的地址属性

2、安装elasticsearch-2.3.4版本 ​ 安装word分词插件点击这里查看安装方法

​ 在src/main/resouces下的spring.xml配置elasticsearch的服务地址:

<elasticsearch:transport-client id="client" cluster-nodes="127.0.0.1:9300" cluster-name="my-application" />

127.0.0.1:9300改为你的服务地址和端口

3、解压\Gwenson-robot\search-view\target\search-view.war到你指定的目录如:d:\Gwenson-robot\search-view

4、安装tomcat

​ 修改tomcat下的conf下的server.xml的

 <Context docBase="d:\Gwenson-robot\search-view" path="/" reloadable="true" /></Host>

​ docBase改为你的项目地址

​ 启动tomcat下的bin下的startup.sh

项目开源地址

在开源**Gitee上

在Github上

About

这是一个使用JAVA语言开发的应用级的分布式爬虫搜索引擎机器人

http://www.gwenson.com

License:Apache License 2.0


Languages

Language:JavaScript 44.9%Language:HTML 41.5%Language:CSS 10.0%Language:Java 3.5%Language:PHP 0.1%