Heritrix3.2.0是否能够抓取基于ajax的网站?

时间:2015-04-05 15:27:06

标签: java web-crawler heritrix

是否可以使用Heritrix-3.2.0抓取基于ajax的网站?

1 个答案:

答案 0 :(得分:1)

如果您打算制作"副本"阿贾克斯网站,显然没有。

如果您想通过分析网站内容来获取某些数据,可以使用Extractor自定义抓取工具,以确定要遵循的网址。在大多数网站上,您可以轻松猜出对您的案例感兴趣的网址,而无需解释javascript。然后将抓取ajax回调并将其提供给处理器链。默认情况下,这会将ajax回调答案存储在存档文件中。

制作自己的Extractor看起来像这样:

    import org.archive.modules.extractor.ContentExtractor;
    import org.archive.modules.extractor.LinkContext;
    import org.archive.modules.extractor.Hop;
    import org.archive.io.ReplayCharSequence;
    import org.archive.modules.CrawlURI;

    public class MyExtractor extends ContentExtractor {
    @Override
    protected boolean shouldExtract(CrawlURI uri) {
        return true;
    }

    @Override
    protected boolean innerExtract(CrawlURI curi) {
        try {
            ReplayCharSequence cs = curi.getRecorder().getContentReplayCharSequence();
            // ... analyse the page content cs as a CharSequence ...

            // decide you want to crawl some page with url [uri] :
            addOutlink( curi, uri, LinkContext.NAVLINK_MISC, Hop.NAVLINK );
    }

编译,将jar文件放在heritrix / lib目录中,并在fetchProcessors链中插入一个引用MyExtractor的bean:基本上,在抓取作业cxml文件中复制extractorHtml行。