Heritrix3.2.0 是否可以抓取基于 ajax 的网站?
Is Heritrix3.2.0 able to crawl ajax-based web sites?
是否可以使用 Heritrix-3.2.0 抓取基于 ajax 的网站?
如果您打算制作一个 ajax 网站的 "copy",显然不行。
如果您想通过分析网站内容来获取一些数据,您可以使用提取器自定义爬虫程序,该提取器将确定要遵循哪些 URL。在大多数网站上,您无需解释 javascript 即可轻松猜出对您的案例感兴趣的 url。然后 ajax 回调将被抓取并提供给处理器链。默认情况下,这会将 ajax 回调答案存储在存档文件中。
制作您自己的提取器如下所示:
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 行。
是否可以使用 Heritrix-3.2.0 抓取基于 ajax 的网站?
如果您打算制作一个 ajax 网站的 "copy",显然不行。
如果您想通过分析网站内容来获取一些数据,您可以使用提取器自定义爬虫程序,该提取器将确定要遵循哪些 URL。在大多数网站上,您无需解释 javascript 即可轻松猜出对您的案例感兴趣的 url。然后 ajax 回调将被抓取并提供给处理器链。默认情况下,这会将 ajax 回调答案存储在存档文件中。
制作您自己的提取器如下所示:
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 行。