All Spiders
caoxu1987728
这个作者很懒,什么都没留下…
展开
-
网络爬虫与浏览器的异曲同工之处
网络爬虫与浏览器的异曲同工之处抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的。比如,你打开一个浏览器,输入清华大学的网址http://www.tsinghua.edu.cn,如图1.1所示。 "打开"网页的过程其实就是浏览器作为一个浏览的"客户端",向服务器端发送了一次请求,把服务器端的文件"抓"到本地,再进行解释、展现。更进一步,可以通过浏览器端查看"抓取"过来原创 2011-05-03 15:15:00 · 1549 阅读 · 0 评论 -
Heritrix的架构之CrawController
CrawlController即中央控制器,是一次抓取任务中的核心组件。它将决定整个抓取任务的开始和结束CrawlController位于org.archive.crawler.framework中,在它的Field声明中,看到如下代码片段。// key subcomponents which define and implement a crawl in progress priva原创 2008-05-04 20:09:00 · 538 阅读 · 0 评论 -
MyEclipse下配置heritrix 1.12.1步骤
虽然前面已经有过配置了,但我感觉这篇文章还不错,就转帖了,说不定还有用处呢,呵呵……1. 下载heritrix 1.12.1-src.zip和heritrix 1.12.1.zip。2. 新建空的java项目(注意不是WEB项目), 命名为heritrix。3. 把heritrix-1.12.1-src/src/java/目录下的org、st和co转载 2008-05-04 20:23:00 · 771 阅读 · 0 评论 -
Heritrix的多线程ToeThread和ToePool
想要更有效更快速的抓取网页内容,则必须采用多线程。Heritrix中提供了一个标准的线程池ToePool,它用于管理所有的抓取线程。 ToePool和ToeThread都位于org.archive.crawler.framework包中。前面已经说过ToePool的初始化,是在CrawlController的initialize()方法中完成的。来看一下ToePool以及ToeThread是如何被原创 2008-05-05 22:51:00 · 979 阅读 · 0 评论 -
处理链和Processor
处理器链包括以下几种: 1 PreProcessor 2 Fetcher 3Extractor 4 Writer 5PostProcessor 为了很好的表示整个处理器链的逻辑结构,以及它们之间的链式调用关系,Heritrix设计了几个API来表示这种逻辑结构。org.archive.crawler.framework.Processor org.archiv原创 2008-05-06 16:46:00 · 1097 阅读 · 0 评论 -
实现Heritrix的完全代码
零零散散的讲了这么多,下面的代码是一个很好的总结:1 /* Copyright (C) 2003 Internet Archive.2 *3 * This file is part of the Heritrix web crawler (crawler.archive.org).4 *5 * Heritrix is free software; you原创 2008-05-06 16:51:00 · 2185 阅读 · 0 评论 -
扩展Heritix之添加Extractor
api帮助查询文档http://crawler.archive.org/apidocs/Heritrix内嵌的Extractor并不能够很好的完成所需要的工作,这不是说它不够强大,而是因为在解析一个网页时,常常有特定的需要。比如,可能只想抓取某种格式的链接,或是抓取某一特定格式中的文本片断。Heritrix所提供的大众化的Extractor只能够将所有信息全部抓取下来。在这种情况下,就无法控制原创 2008-05-06 17:06:00 · 2976 阅读 · 5 评论 -
扩展FrontierScheduler来达到筛选的目的
FrontierScheduler的innerprocessor在这里查阅 http://blog.csdn.net/caoxu1987728/archive/2008/05/06/2404593.aspxpackage my.postprocessor;import java.util.logging.Logger;import org.archive.crawler.d原创 2008-05-10 12:46:00 · 1273 阅读 · 0 评论 -
罗列各种spider
Heritrix Heritrix is the Internet Archive′s open-source, extensible, web-scale, archival-quality web crawler project.Heritrix (sometimes spelled heretrix, or misspelled or missaid as heratrix/heri原创 2008-08-01 22:47:00 · 796 阅读 · 0 评论 -
HTMLPage类的说明
HTMLPage类:HTMLPage类中主要也就几种用途,而从HTMLPage类中抓取图片是一个非常重要的一个功能,诚然还有超链接和表单。而在HTMLPage类的内置类Parser中,大部分工作都是由handleSimpleTag(简单标签)和和handleStartTag(起始标签方法来完成。详细代码清单如下:package com.heaton.bot;import原创 2008-10-05 16:39:00 · 1447 阅读 · 0 评论 -
在Heritrix中抓取所需的定制类
对比一下以前的代码,基本格式都是相同的http://blog.csdn.net/caoxu1987728/archive/2008/05/06/2402204.aspxpackage my.extractor;import java.io.BufferedReader;import java.io.IOException;import java.io.StringReade原创 2008-05-10 13:07:00 · 1361 阅读 · 2 评论 -
在Prefetcher中取消robots.txt的限制
Robots.txt是一种专门用于搜索引擎网络爬虫的文件,当构造一个网站时,如果作者希望该网站的内容被搜索引擎收录,就可以在网站中创建一个纯文本文件robots.txt,在这个文件中,声明该网站不想被robot访问的部分。这样,该网站的部分或全部内容就可以不被搜索引擎收录了,或者指定搜索引擎只收录指定的内容。 Heritrix在其说明文档中,表明它是一个完全遵守robots.txt协议的网络爬虫。原创 2008-05-06 22:59:00 · 1519 阅读 · 1 评论 -
Heritrix的启动
照着下面的方法一步一步做就行了:http://www.cip.ifi.lmu.de/~schoefma/howto/run_heritrix_on_windows/#trouble翻译一下就是:1. 运行heritrix步骤:2. 下载后将其解压到heritrix文件夹下:copy heritrix/conf/jmxremote.password.tem原创 2008-05-02 11:47:00 · 690 阅读 · 1 评论 -
Heritrix-1.12.1在Eclipse中的配置
关于网络爬虫Heritrix,在配置上真是一件不容易的事情,之所以这样会说,是因为Heritrix开发之初就是基于在Unix平台的(可以参考官方Manual,网址为http://crawler.archive.org/articles/user_manual/index.html),可以保证非常容易地在Unix平台下轻松地启动。因此,在Windows平台下,配置起来让人感觉有点非常规。在网络上原创 2008-05-02 18:58:00 · 1843 阅读 · 1 评论 -
Jobs的抓取
接下来,我们来看看如何抓取任务(1)单击WebUI菜单栏上的“Jobs”标签,就可以进入任务创建页面。 (2)在任务创建页面中,有4种创建任务的方式,具体含义如下。 1. Based on existing job:以一个已经有的抓取任务为模板,创建所有抓取属性和抓取起始URL的列表。 2 Based on a recovery:在以前的某个任务中,可能设置过一些状态点,新的任原创 2008-05-04 11:23:00 · 597 阅读 · 0 评论 -
使用Heritrix-1.12.1新建抓取任务
首先启动Heritrix后台监听程序,然后登录WebUI(可以在文章 Heritrix-1.12.1在Eclipse中的配置 中参考启动过程、及其登录WebUI)。成功登录WebUI后,初始界面如图所示:选择上面一排导航菜单中的“Jobs”链接,开始建立一个抓取任务,如图所示:创建一个Job(Create New Job)有四种选择方式:Based On E原创 2008-05-04 16:56:00 · 1015 阅读 · 1 评论 -
Heritrix的架构之CrawOrder
简单的抓取我们已经会了,那么Heritrix的内容究竟是如何工作的呢?它的设计方面有什么突出之处?CrawOrder:它是整个抓取工作的起点,CrawlOrder继承自一系列的与属性设置相关的基类。另外,它的最顶层基类是javax.management.Attribute,这是一个JMX中的类,它可以动态的反映出Java容器内某个MBean的属性变化。我们已经知道一次抓取任务包括许多的属性原创 2008-05-04 17:29:00 · 548 阅读 · 0 评论 -
Frontier链接制造工厂
Frontier在英文中的意思是“前线,领域”,在Heritrix中,它表示一种具。它通过一些特定的算法来决定哪个链接将接下来被送入处理器链中,同时,它本身也负责一定的日志和状态报告功能。事实上,要写出一个合格并且真正能够使用的Frontier绝非一件简单的事情,尽管有了Frontier接口,其中的方法约束了Frontier的行为,也给编码带来了一定的指示。但是其中还存在着很多问题,需要很原创 2008-05-04 22:00:00 · 544 阅读 · 0 评论 -
用Berkeley DB实现的BdbFrontier
简单的说,Berkeley DB就是一个HashTable,它能够按“key/value”方式来保存数据。它是由美国Sleepycat公司开发的一套开放源代码的嵌入式数据库,它为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。那么,为什么不使用一个传统的关系型数据库呢?这是因为当使用BerkeleyDB时,数据库和应用程序在相同的地址空间中运行,所以数据库操作不需要进程间的通原创 2008-05-05 17:14:00 · 1825 阅读 · 0 评论 -
定制Queue-assignment-policy两个问题及解决方法
首先提出两个问题:1 什么是Queue-assignment-policy2 为什么要改变Queue-assignment-policy在10.2节中,向读者介绍过了Heritrix的架构。其中,讲解了Heritrix使用了Berkeley DB来构建链接队列。这些队列被置放于BdbMultipleWorkQueues中时,总是先给予一个Key,然后将那些Key值相同的链接放在一起,成原创 2008-05-06 22:39:00 · 870 阅读 · 0 评论 -
扩展FrontierScheduler来抓取特定的内容
FrontierScheduler是一个PostProcessor,它的作用是将在Extractor中所分析得出的链接加入到Frontier中,以待继续处理。先来看一下FrontierScheduler的innerProcess()方法,代码如下。protected void innerProcess(final CrawlURI curi) { if (LOGGER.isLog原创 2008-05-06 22:50:00 · 1509 阅读 · 0 评论 -
从一个网页中获取图片
GetImage类:怎么说呢,如果你不研究底层一点的东西(其实这里指的是htmlpage类),直接调用还是比较简单的。代码如下:import java.awt.*;import java.util.*;import javax.swing.*;import java.io.*;import com.heaton.bot.*;/** * This原创 2008-10-05 15:49:00 · 1114 阅读 · 0 评论 -
供调试WatchBBS
调试WatchBBS:去掉swing部分,稍微修改了一下代码。调试结果:成功!理解代码程度:中详细代码:import java.util.Date;import javax.swing.SwingUtilities;import com.heaton.bot.HTMLParser;import com.heaton.bot.HTMLTag;im原创 2008-10-05 11:27:00 · 778 阅读 · 0 评论 -
HTTPSocket类和SocketFactory类的实现
HTTPSocket类、SocketFactory:HTTPSocket类继承了HTTP类中lowLevelSend的抽象方法。下面简单分析一下lowLevelSend方法:1,如何建立连接(通过URL)注:如果要求HTTPS连接,则使用SSL打开连接。2,确定请求是“GET”还是“POST”,处理所有的客户端标题。3,读完标题之后,对它们进行解析(必须),然后再读入真正原创 2008-10-03 15:40:00 · 3562 阅读 · 0 评论 -
使用ViewURLCookie分析Cookie
ViewURLCookie:通过使用ViewURLCookie这个新例程,我们就可以分析给定URL返回的Cookie;效果如下: 实现代码如下:import java.awt.*;import javax.swing.*;import javax.swing.table.*;import com.heaton.bot.*;/** * Thi原创 2008-10-03 10:13:00 · 576 阅读 · 0 评论 -
HtmlParser类的说明
HtmlParser类:这是一个处理网页源文件的类。这里涉及到了比较底层的东西。由于现在无法调试,而且无碍大局,暂时就不深究它了。没事的时候可以看看:/** * The HTMLParse class is used to parse an HTML page. It is * just a utility class, and does NOT store any原创 2008-10-02 20:43:00 · 781 阅读 · 0 评论 -
Parse类的处理
Parse类:顾名思义,Parse类主要用于解析名称/值对。可以解析Cookie,也可以用于解析HTML。而在编写Spider程序时,在Http中提及的HttpParser的父类就是Parse。Parse类源代码里面的一些变量名都让人费解啊;代码清单如下:/** * The Parse class is the low-level text parsing class原创 2008-10-02 20:18:00 · 632 阅读 · 0 评论 -
HtmlTag类的实现
HtmlTag类:我左看右看,上看下看,都没发现这个HtmlTag类到底有什么出奇的地方。除了增加了一个getAttributeValue方法外,其他的可以说完全是剽窃AttributeList类。代码清单:/** * The HTMLTag class is used to store an HTML tag. This * includes the tag na原创 2008-10-02 16:10:00 · 702 阅读 · 0 评论 -
AttributeList类的实现
AttributeList类:前面说到过Attribute类,而现在是AttributeList类,有什么关系呢。我的理解是:把Attribute看成是一个一维数组,而AttributeList就是一个二维数组。其中两个比较常用的方法是:1,get(int id)通过检索号获得Attribute;2,get(string name)通过name获得Attribute.代码清单如下:原创 2008-10-02 15:36:00 · 640 阅读 · 0 评论 -
Attribute类的实现
Attribute类:闻其名也可知它是有关属性类。不错,Attribute犹如一个容器bean来装载一个对象的属性。本Attribute类里面的属性有Name、value和delim三个。详细代码清单:package com.heaton.bot;/** * The Attribute class stores a list of named value pair原创 2008-10-02 15:16:00 · 535 阅读 · 0 评论 -
SpiderIntenalWorkload类的实现
SpiderIntenalWorkload类:本类完全是为IWorkStorable接口方法的具体实现。存储在计算机内存中。用了hashtable和vector来存储URL。方法比较简单,具体代码如下:package com.heaton.bot;import java.util.Enumeration;import java.util.Hashtable;i原创 2008-10-02 13:08:00 · 483 阅读 · 0 评论 -
Spider类的实现
Spider类的实现:网络机器人最最最核心的一个类终于姗姗来迟,不过没关系,最好的往往在高潮部分。言归正传,Spider类包含了很多的接口所定义的方法,可以通过他们来命令Spider。Spider有三个重要的任务:1,它担当模拟接口,供使用Spider提供方法;2,与SpiderWorker进行通信;3,检测Spider何时完成。详细代码清单:/** * The Sp原创 2008-10-02 10:20:00 · 710 阅读 · 0 评论 -
IWorkloadStorable接口的实现
IWorkloadStorable接口:Spider的主要工作之一就是处理访问过的和将要访问的站点的列表,称为作业。IWorkloadStorable接口定义的对象就可以存入和取出作业中的网页.最主要的两个方法:public String assignWorkload();//取出作业里的网页public void addWorkload(String url);//向作业里存入原创 2008-10-01 21:33:00 · 462 阅读 · 0 评论 -
对标签(A)的解析
最近再看一本关于spider的书,偶尔想起了对标签的解析过程。偶就把代码拷贝过来了,以备不是之需: import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.Date;import原创 2008-09-29 12:11:00 · 645 阅读 · 0 评论 -
抓取网页GetSite
大略扫描了一下整本书,感觉上写spider最符合我现在的学习要求,那就专心看编写Spider程序了。程序是可以运行,但是却没有得到实际的东西,for example:href=“content.asp?id=2565”,尽管知道它是internal链接,可是spider却不抓取。总之,从下列代码清单中,本人还无法找到确切的原因而修改之;效果如下: 代码清单如下:原创 2008-10-01 15:55:00 · 1173 阅读 · 2 评论 -
构造Bot程序WatchBBS
Bot程序WatchBBS:主要目的:时刻洞悉某个论坛有新消息粘贴。实现方法:剖析网页,通过对最新时间的对比来得出结论。详细代码:import java.awt.Dimension;import java.awt.Insets;import java.util.Date;import javax.swing.JOptionPane;import jav原创 2008-10-05 09:25:00 · 737 阅读 · 0 评论 -
完整的WatchRedhome程序
WatchRedhome程序:代码看上去可能比较乱,但是已经把原来那些有warning或deprecated的方法都已改正。效果如下:详细代码如下:import java.awt.Dimension; import java.awt.Insets; import java.text.DateFormat;import java.text.ParseExcept原创 2008-10-05 13:50:00 · 645 阅读 · 0 评论 -
HTTP类的实现
HTTP类:本类里面最后重要的方法为send方法,send方法是使用Bot包的程序进入HTTP类的主要入口点。通过请求Web服务器检索并发送数据。send方法会启动一个称为lowLevelSend发送命令。send方法主要负责Cookie和自动重定向ixangde管理。详细代码清单如下:package com.heaton.bot;import java.util原创 2008-10-03 15:14:00 · 1344 阅读 · 0 评论 -
SpiderWorker类的实现
SpiderWorker类的任务:笼统地说,Spider使用的多线程,把任务分成了很多小任务。Spider类的基本任务是下载一个web站点,并将网页加入到作业中。执行SpiderWorker,获得网页并对其进行处理,即查看是否含有链接,是内部链接、外部链接还是其他链接。然后通过Spider对象返回链接地址,同时加入到作业里面,循环执行。可能很多人以为Spider类是核心中的核心,其实Sp原创 2008-10-01 22:28:00 · 475 阅读 · 0 评论 -
SpiderDone类的实现
首先说明一下SpiderDone类的目的:由于编写大型的Spider程序需要很多并发的线程,所以要知道Spider何时完成还是比较难的。而SpiderDone类正好可以实现这个功能。最重要的两个方法:synchronized public void workerBegin();//每执行一次,线程数量加一synchronized public void workerEnd();/原创 2008-10-01 21:49:00 · 395 阅读 · 0 评论