去年写了个网页爬虫, 放在 https://code.google.com/p/mysh-crawler/, google code 常被政府墙掉, 搞不懂代码有啥好墙的, 这里留个备份.
爬虫特点:
1. 插件驱动. 爬虫本身可视作http访问和持久化引擎, 爬虫的目标和数据处理由插件定义.
2. 高并发. 视自己的网络环境自由配置.
3. 持久化支持. 这里使用 MySQL, 要换的同学自行配置.
使用:
配置在 conf/mycrawler.properties
库表定义在 conf/sql.sql
程序入口在 mysh.crawler.core.MyshCrawler
自定义插件的行为由 Plugin 类定义.
package mysh.crawler.core;
import java.util.List;
/**
* 爬虫插件,需要线程安全的实现. 需要定义无参构造器(与它被实例化的方式有关).
*
* @author ZhangZhx
*
*/
public abstract class Plugin {
private int hashCode = 0;
@Override
public final boolean equals(Object obj) {
if (obj != null && obj.getClass().equals(this.getClass())) {
return true;
}
return false;
}
@Override
public final int hashCode() {
if (this.hashCode == 0) {
this.hashCode = this.getClass().getName().hashCode();
}
return this.hashCode;
}
/**
* 取插件定义的 URL 种子. 建议返回非空不可变对象.
*
* @return
*/
public abstract List<String> getURLSeeds();
/**
* 是否接受给定的页面.
*
* @param pageURL
* 页面地址
* @return
*/
public abstract boolean isURLAccepted(String pageURL);
/**
* 爬虫取得的页面供插件分析处理. 需要非阻塞、低计算消耗、线程安全的实现,以保证爬虫性能.
*
* @param page
* 待处理的页面
*/
public abstract void putPageAnalyseResult(PageURLAnalyser.AnalyseResult analyseResult);
/**
* 启动插件.<br/>
* 如果插件需要额外的启动指令, 或插件的某些动作需要保证在初始化完成后再执行, 可将动作放在这里.<br/>
* 此方法将在爬虫的启动器中被调用.
*/
public abstract void start();
/**
* 停止插件.
*/
public abstract void shutdown();
}
分享到:
相关推荐
【标题】"Mysh_hiroshiharada_" 暗示了这个压缩包可能与一个名为"Mysh"的项目或软件有关,同时与个人或团队名"Hiroshi Harada"有所关联。Hiroshi Harada可能是一位开发者或者项目负责人,他的名字被用于标记此资源,...
该项目为基于mysh的跨语言Shell脚本设计,包含57个文件,涵盖Shell、Python、JavaScript和Java等多种编程语言。文件类型多样,包括25个Markdown文档、16个Shell脚本、3个Python脚本、2个JavaScript文件、2个文本文件...
检测服务监控脚本,可设置定时执行及...*/5 * * * * /bin/bash /home/mysh/service-health-check.sh >/dev/null 2>&1 开机启动: vim /etc/rc.local /bin/bash /home/mysh/service-health-check.sh >/dev/null 2>&1 &
标题 "my_sh_lessons .rar" 提供的信息表明这是一个压缩文件,其中包含了某个人用于教学的脚本程序。从描述 "本人上课用的脚本程序,大家不用下载" 我们可以推测,这些脚本可能与教授编程或者系统管理相关的课程有关...
一、说明 二、安装 三、配置 四、建议关闭general log
例如,如果想让所有用户都能读取`mysh.sh`文件,可以使用命令`chmod a+r mysh.sh`。这里`a+r`表示对所有用户(`a`)增加读权限(`+r`)。 综上所述,理解UNIX文件和目录的权限管理对于系统管理员来说至关重要。正确...
在主上查询配置的从库主机信息,其中repl是复制账号,该命令等同 SHOW PROCESSLIST \G;2、从库查询信息从库执行以下命令,查询同步状态如像以上
16. 将文件 mysh 访问权限改为文件主可执行:chmod +x mysh 17. 将文件 mysh 复制到上级目录中:cp mysh .. 18. 令 vi 返回前台,从中追加睡眠 1 分钟和返回前台的命令,从 vi 保存退出:fg; sleep 60 & fg 19. 以后...
13. сайт в разработке (sait v razrabotke) - 网页正在建立中 14. процессор (protsessor) - CPU(中央处理器) 15. оперативная память (operativnaya pamять) - ...
下面的示例说明了提示mysh>和用户的下一个命令:cat file1。 -mysh> cat file1 要实现Shell接口,请首先让父进程读取用户在命令行上输入的内容(在本例中为cat prog.c),然后创建一个单独的执行该命令的子进程。...
- **示例**:`0 4,12,21 * * * /bin/bash /home/mysh/monitorprocess.sh` 表示在每天的 4 点、12 点和 21 点执行 `/home/mysh/monitorprocess.sh`。 ### 5. 扩展知识点 #### Shell 的条件判断 在 Shell 脚本中,...
NULL 博文链接:https://mysh.iteye.com/blog/1603786
- "mysh > mylog.txt 2>&1" 将mysh命令的标准输出和错误都重定向到mylog.txt文件中。 - "wc 使用wc命令计算文件中的单词数,将文件file作为wc命令的标准输入。 - "cmd >> file 2>&1" 将cmd命令的标准输出追加到文件...
1. 同样修改`/etc/profile`,在文件尾部添加别名定义,如:`alias mysh=/root/mysh.sh`(使用脚本的全路径) 2. 刷新配置:`source /etc/profile` 3. 检查别名是否生效:`alias mysh` 4. 使用别名执行脚本:`mysh` ...
例如,mysh > mylog.txt 2>&1 就可以将标准输出和错误输出都重定向到 mylog.txt 文件中。 此外,我们还可以使用 /dev/null 来忽略标准输出或错误输出。例如,mysh > /dev/null 2>&1 就可以忽略标准输出和错误输出。...
brr = mysh.Range("a3:z" & mysh.Range("a65536").End(xlUp).Row) For i = 1 To UBound(arr) For j = 1 To UBound(brr) If brr(j, 1) = arr(i, 1) Then arr(i, 16) = brr(j, 22) arr(i, 17) = brr(j, 23) arr...
启动的时候进入 myserver/mysh/目录 然后运行 restart_thrift.sh 脚本就可以直接启动 ps 一下进程是否正常,如果错误请查看日志 然后就可以使用线下的php直接调用, 代码是从网上找到的,比较容易入门 当然也可以直接...
要求实现一个简单的命令解释器,也就是linux中的shell程序,在本程序中我们将其起名为mysh,要求: 1、 能够执行外部程序命令,命令可以带参数; 2、 能够执行fg、bg、cd、history、exit等内部命令; 3、 使用管道和...
这个“mysh注册小程序”可能包含了实现上述功能的源代码、配置文件和数据库脚本。开发者通常会看到以下几个部分: - Java源代码:包括Struts的Action类,以及使用Hibernate的DAO(Data Access Object)层。 - 配置...