我正在玩Apache Nutch,我成功地抓取了一个网站。我想用Nutch制作一个网站的克隆,这样我就可以离线访问抓取的网页。有没有办法做到这一点?我正在寻找类似端点的东西,它接收url并返回网页内容,就像我用curl GETting url一样。
我知道有更多像HTTrack这样的专业解决方案,但我想知道是否可以使用Nutch来做到这一点。
发布于 2017-04-10 03:13:14
我认为你现在不需要这个,但不管怎样,我把我的答案。当然,也可以使用Apache注入种子urls并生成要获取的urls段,当您执行Nutch.After命令时-
$ bin/nutch fetch -allHbase (通常使用Hbase作为Nutch存储) webpage表结构将如下所示-
webpage : {
key : "com.exampe.dev:http/",
f : {
bas : {
timestamp : 1293732801833,
value : "http://dev.example.com/"
},
cnt : {
timestamp : 1293732801833,
value : "DOCTYPE html PUBLIC "-//W3C//DTD X...rest of page content"
},
fi : {
timestamp : 1293676557658,
value : "\x00'\x8D\x00"
},
prot : {
timestamp : 1293732801833,
value : "x02\x00\x00"
},
st : {
timestamp : 1293732801833,
value : "x00\x00\x00\x02"
},
ts : {
timestamp : 1293676557658,
value : "\x00\x00\x01-5!\x9D\xE5"
}
typ : {
timestamp : 1293732801833,
value : "application/xhtml+xml"
}
},
h : {
Cache-Control : {
timestamp : 1293732801833,
value : "private"
},
Content-Type : {
timestamp : 1293732801833,
value : "text/html; charset=UTF-8"
},
Date : {
timestamp : 1293732801833,
value : "Thu, 30 Dec 2010 18:13:21 GMT"
},
ETag : {
timestamp : 1293732801833,
value : 40bdf8b9-8c0a-477e-9ee4-b19995601dde"
},
Expires : {
timestamp : 1293732801833,
value : "Thu, 30 Dec 2010 18:13:21 GMT"
},
Last-Modified : {
timestamp : 1293732801833,
value : "Thu, 30 Dec 2010 15:01:20 GMT"
},
Server : {
timestamp : 1293732801833,
value : "GSE"
},
Set-Cookie : {
timestamp : 1293732801833,
value : "blogger_TID=130c0c57a66d0704;HttpOnly"
},
X-Content-Type-Options : {
timestamp : 1293732801833,
value : "nosniff"
},
X-XSS-Protection : {
timestamp : 1293732801833,
value : "1; mode=block"
}
},
mk : {
_injmrk_ : {
timestamp : 1293676557658,
value : "y"
},
_gnmrk_ : {
timestamp=1293732629430,
value : "1293732622-2092819984"
},
_ftcmrk_ : {
timestamp : 1293732801833,
value : "1293732622-2092819984"
}
},
mtdt : {
_csh_ : {
timestamp : 1293676557658,
value : "x80\x00\x00"
}
},
s : {
s : {
timestamp : 1293676557658,
value : "x80\x00\x00"
}
}
}f列族下名为cnt的列将包含页面的整个html内容。很明显,你可以用它来克隆页面。
此外,您还可以编写实现Parser或ParseFilter接口的自定义插件来捕获页面的全部内容。代码将非常简单明了。
https://stackoverflow.com/questions/33354460
复制相似问题