作为概念证明,我正在构建这个极其简单的 Twitter Friends 爬虫。下面是它的作用:
- 为 Twitter 帐户“twitter-user-1”执行 CrawlJob
- 查找“twitter-user-1”的所有朋友
- 为“twitter-user-1”的所有好友执行 CrawlJob
这是我的代码到目前为止的样子:
def main( args:Array[String] ) {
scalar {
grid.execute(classOf[CrawlTask], "twitter-user-1").get
}
}
class CrawlTask extends GridTaskNoReduceSplitAdapter[String] {
def split( gridSize:Int, arg:String): Collection[GridJob] = {
val jobs:Collection[GridJob] = new ArrayList[GridJob]()
val initialCrawlJob = new CrawlJob()
initialCrawlJob.twitterId = arg
jobs.add(initialCrawlJob)
jobs
}
}
class CrawlJob extends GridJob {
var twitterId:String = new String()
def cancel() = {
println("cancel - " + twitterId)
}
def execute():Object = {
println("fetch friends for - " + twitterId)
// Fetch and execute CrawlJobs for all friends
return null
}
}
我为所有 twitter 交互准备了 Java 服务。需要一些示例来弄清楚如何在现有作业中创建新作业并将其与原始任务相关联。
谢谢 | 斯里兰甘