Arachnid Web Spider Framework的文档只有一个英文的,如下
Arachnid Web Spider Framework
Description
Arachnid is a Java-based web spider framework. It includes a simple HTML parser object that parses an input stream containing HTML content. Simple Web spiders can be created by sub-classing Arachnid and adding a few lines of code called after each page of a Web site is parsed. Two example spider applications are included to illustrate how to use the framework.
Warning
WARNING: A Web spider may put a large load on a server and a network. You may wish to do this by design - for instance when load testing YOUR server, using YOUR hosts and YOUR network.
DO NOT use this software to place an excessive load on someone elses host and network resources without explicit permission!!
Author
This software was written by
Robert Platt.
Use
- Build a Arachnid.jar file using build.xml and Ant. You can also build documentation using the 'docs' target.
- Add the jar file to your CLASSPATH
- Arachnid is an abstract base class that uses the "visitor" pattern. It has a "traverse()" method that walks through a Web site. For each (valid) page in the site it calls the abstract method handleLink(). You need to dervie a sub-class from Arachnid and define a handleLink() method. This will be called for each and every valid page in the Web site. A PageInfo object is passed to handleLink(). The PageInfo object contains useful information about the Web page. Four other methods must be defined:
- handleBadLink() - for processing an invalid URL
- handleNonHTMLlink() - for processing links to non-HTML resources
- handleExternalLink() - for processing links that are outside the Web site
- handleBadIO() - in the event of an I/O problem while attempting to process a Web page
Instantiate your sub-class and call traverse().
- Compile your application and run it.
Example
The following code uses Arachnid to generate a (very simplistic) site map for a Web site.
import java.io.*;
import java.net.*;
import java.util.*;
import bplatt.spider.*;
public class SimpleSiteMapGen {
private String site;
private final static String header = "<html></html><head></head>";
private final static String trailer = "
";
public static void main(String[] args) {
if (args.length != 1) {
System.err.println("java SimpleSiteMapGen <url></url>");
System.exit(-1);
}
SimpleSiteMapGen s = new SimpleSiteMapGen(args[0]);
s.generate();
}
public SimpleSiteMapGen(String site) { this.site = site; }
public void generate() {
MySpider spider = null;
try { spider = new MySpider(site); }
catch(MalformedURLException e) {
System.err.println(e);
System.err.println("Invalid URL: "+site);
return;
}
System.out.println(header);
spider.traverse();
System.out.println(trailer);
}
}
class MySpider extends Arachnid {
public MySpider(String base) throws MalformedURLException { super(base); }
protected void handleLink(PageInfo p) {
String link = p.getUrl().toString();
String title = p.getTitle();
if (link == null || title == null || link.length() == 0 || title.length() ==0) return;
else System.out.println("Sun Microsystems.
License
The Arachnid Web Spider framework is licensed under the GNU Public License. See GPL.txt for details. If you are unable or unwilling to abide by the terms of this license, please remove this code from your machine.
Support
The Arachnid Web Spider framework is distributed AS IS, with NO SUPPORT.
只有通过程序提供的3个例子来研究他的使用。
首先看到SimpleSiteMapGen.java的使用
这个文件实现了一个简单的取出对应网页的title的功能
main函数就一点点
public static void main(String[] args) {
// if (args.length != 1) {
// System.err.println("java SimpleSiteMapGen <url></url>");
// System.exit(-1);
// }
String url = "http://www.hnict.net";
SimpleSiteMapGen s = new SimpleSiteMapGen(url);
s.generate();
}
这个是我修改了一下、注释掉了判断条件,直接运行的一个函数。
SimpleSiteMapGen 的gennerate方法如下
public void generate() {
MySpider spider = null;
try { spider = new MySpider(site); }
catch(MalformedURLException e) {
System.err.println(e);
System.err.println("Invalid URL: "+site);
return;
}
System.out.println(header);
spider.traverse();
System.out.println(trailer);
}
主要完成两个功能,实例化一个MySpider对象,然后执行MySpider的traverse方法。
MySpider类实现了抽象类Arachnid.java。这个类是整个爬虫引擎的主要功能的抽象类。并且MySpider还实现了
handleLink()方法。这里面就是调用了PageInfo的getTitle()和getUrl()调用标题和网站的url 。
<wbr></wbr>
分享到:
相关推荐
一个基于Java的web spider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Web spiders并能够在Web站上的每个页面被解析之后增加几行代码调用。
《Arachnid源码解析与网络实验探索》 在信息技术领域,开源软件和共享资源扮演着至关重要的角色,它们促进了技术的快速发展和创新。今天,我们将深入探讨一个名为"Arachnid"的项目,它是网络实验的重要参考资料。...
**Arachnid:一个用Java实现的Web爬虫应用** 蛛形纲,或者在这个语境中,是指一种软件工具,即Arachnid,它是一个基于Java的Web爬虫应用程序。Web爬虫,也称为网络抓取器或网络爬行器,是一种自动浏览互联网并收集...
1. **图形数据库支持**:Arachnid4Laravel 专门设计用于处理图形数据库,如 Neo4j。图形数据库以节点、边和属性的形式存储数据,特别适合处理复杂的关系网络。 2. **门面(Facade)**:在 Laravel 中,门面是一种...
《PyPI官网下载:arachnid-0.1.6.tar.gz——深入解析Python库与分布式系统》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了丰富的Python库供用户下载和使用。在本次讨论中,我们关注的是一个...
Arachnid:是一个基于Java的web spider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Web spiders并能够在Web站上的每个页面被解析之后增加几行代码调用...
Spiders 管理网络,Arachnid 管理 Neo4J Graphs。 这个库很大程度上基于 Louis-Philippe Huberdeau 在他的所做的出色工作。 主要区别在于,此 OGM 允许您定义关系对象以及节点对象,从而使您可以非常轻松地将属性...
**Arachnid: 网络爬虫与Reddit机器人** `Arachnid`是一个用Python编写的网络爬虫工具,其名称来源于生物学中的蛛形纲动物,象征着它在网络世界中像蜘蛛一样进行数据抓取。它专为高效地抓取和处理网页信息而设计,...
这个引擎的名字可能是来源于蜘蛛(Arachnid)的概念,因为蜘蛛在互联网中象征着搜索引擎爬虫,而CMS则与网页内容的抓取和管理相关。作为一个开源项目,它的源代码可供公众查看、使用和改进,这鼓励了社区协作和持续...
1. **水晶(Crystal)**: Crystal是一种现代、静态类型的编程语言,它融合了Ruby的简洁语法和速度,以及编译型语言如C和Java的性能。它支持面向对象和函数式编程范式,拥有丰富的标准库和社区生态,为开发高效网络...
7. **Arachnid**: 一个基于Java的Web蜘蛛框架,提供了简单的HTML解析器,用户可以通过实现其子类轻松创建自己的Web爬虫。 8. **LARM**: 针对Jakarta Lucene的搜索解决方案,LARM能为文件、数据库和Web站点建立索引...
蜘蛛网爬行器 该库将对在给定网站上找到的所有唯一内部链接进行爬网,直到指定的最大页面深度。 该库使用和库来站点页面并提取与SEO相关的主要信息,包括: title , h1 elements ... "zrashwani/arachnid": "dev-mas
#### 1. 设置爬虫基本参数 - **设置起始URL**:通过`setStartURL(URL url)`方法指定爬虫的初始抓取地址。 - **设置最大爬取深度**:`setMaxDepth(int depth)`用于控制爬虫的最大抓取层级。 - **设置睡眠时间**:`...
评论包括Arachnid Cricket Pro系列,dartslive 200S,sunlight blast 6000等。 从Dart,我们只审查最好的作品,包括bottelsen系列,蜘蛛,黑寡妇,KODart等等。 一切都可以轻松满足您的需求。 如果您对自己的Dart...
GitHub仓库:https://github.com/arachnid92/U-Cursos-Plus Autor:ManuelOlguín(aka Arachnid92),Intutierante deIngenieríaCivil enComputaciónContacto:molguin@dcc.uchile.cl版本1:-Primera版本...
触发陷阱艾达源代码##内容关于艾达许可证信息关于本文档Adafruit 文件爱特梅尔图书馆Arduino 库艾达项目文件EEPROM地址创建新模式构建固件的注意事项##1。 关于艾达Ada 是由 Triggertrap (triggertrap.com) 创建的...
基于https://stackapps.com/questions/8287/2019-april-fools-day-retro-theme源代码:https://github.com/Alexrgs/Retro_StackOverflow特别感谢/感谢https://github.com / a-stone-arachnid / Time-Travel-Mode ...
git clone https://github.com/arachnid/sggc.git npm install 用法 在contracts目录中实施一个或多个contracts 。 用truffle test进行相应的truffle test ; 例如,如果您实现了排序,请运行: truffle test test...