2

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

4

1 回答 1

1

如果您打算制作 ajax 网站的“副本”,显然不会。

如果您想通过分析网站的内容来获取一些数据,您可以使用提取器自定义爬虫,该提取器将确定要遵循的 URL。在大多数网站上,您可以轻松猜出对您的案例感兴趣的 url,而无需解释 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 行。

于 2015-04-07T14:14:34.027 回答