java爬取wikipedia_第十五章 爬取维基百科

第十五章 爬取维基百科

译者:飞龙

自豪地采用谷歌翻译

在本章中,我展示了上一个练习的解决方案,并分析了 Web 索引算法的性能。然后我们构建一个简单的 Web 爬虫。

15.1 基于 Redis 的索引器

在我的解决方案中,我们在 Redis 中存储两种结构:

对于每个检索词,我们有一个URLSet,它是一个 Redis 集合,包含检索词的 URL。

对于每个网址,我们有一个TermCounter,这是一个 Redis 哈希表,将每个检索词映射到它出现的次数。

我们在上一章讨论了这些数据类型。你还可以在 http://thinkdast.com/redistypes 上阅读 Redis Set和Hash`的信息

在JedisIndex中,我提供了一个方法,它可以接受一个检索词并返回 Redis 中它的URLSet的键:

private String urlSetKey(String term) {

return "URLSet:" + term;

}

以及一个方法,接受 URL 并返回 Redis 中它的TermCounter的键。

private String termCounterKey(String url) {

return "TermCounter:" + url;

}

这里是indexPage的实现。

public void indexPage(String url, Elements paragraphs) {

System.out.println("Indexing " + url);

// make a TermCounter and count the terms in the paragraphs

TermCounter tc = new TermCounter(url);

tc.processElements(paragraphs);

// push the contents of the TermCounter to Redis

pushTermCounterToRedis(tc);

}

为了索引页面,我们:

为页面内容创建一个 Java 的TermCounter,使用上一个练习中的代码。

将TermCounter的内容推送到 Redis。

以下是将TermCounter的内容推送到 Redis 的新代码:

public List pushTermCounterToRedis(TermCounter tc) {

Transaction t = jedis.multi();

String ur

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值