小编Jon*_*ght的帖子

用于大规模刮削/解析的技术是什么?

我们正在设计一个大规模的网络抓取/解析项目.基本上,脚本需要浏览网页列表,提取特定标记的内容,并将其存储在数据库中.你会建议用什么语言大规模(数千万页?)..

我们正在将MongoDB用于数据库,因此任何具有可靠MongoDB驱动程序的东西都是优先考虑的.

到目前为止,我们一直在使用(不要笑)PHP,curl和Simple HTML DOM Parser,但我不认为它可以扩展到数百万个页面,特别是因为PHP没有适当的多线程.

我们需要一些易于开发的东西,可以在Linux服务器上运行,具有强大的HTML/DOM解析器以轻松提取该标签,并且可以在合理的时间内轻松下载数百万个网页.我们并不是真的在寻找网络抓取工具,因为我们不需要关注链接并索引所有内容,我们只需要从列表中的每个页面中提取一个标记.

parsing screen-scraping large-data-volumes

8
推荐指数
2
解决办法
2025
查看次数

Mongodb MapReduce连接字符串?

我见过的所有MongoDB MapReduce示例都涉及计数/添加数字.我需要组合字符串,看起来MapReduce是最好的工具.我有一个这种格式的大型MongoDB集合:

{name: userone, type: typeone}
{name: usertwo, type: typetwo}
{name: userthree, type: typeone}
Run Code Online (Sandbox Code Playgroud)

每个名称只有一种类型,但名称不一定是唯一的.我希望最终得到一个集合,列出特定类型的所有名称,可以是逗号分隔列表,也可以是数组,如下所示:

 {type: typeone, names: userone, usertwo}
 {type: typetwo, names: userthree}
Run Code Online (Sandbox Code Playgroud)

我试图使用MapReduce来实现这一目标.当一个类型只有一个用户时,我的功能正常工作.但是,当有多个用户时,"undefined"存储在names字段中.

我不是很擅长Javascript,而且我还在学习MongoDB,所以它可能是一个简单的数据类型或范围错误.

这是我的map和reduce函数.他们怎么了?

map = function() {
emit(this.user,{type:this.type});
}

reduce = function(key, values) {
var all="";
for(var i in values) {
all+=values[i]['type']+",";
}
return all;
}
Run Code Online (Sandbox Code Playgroud)

javascript mapreduce mongodb

2
推荐指数
1
解决办法
3658
查看次数