如何从站点 - 服务器端获取文本

时间:2014-02-01 15:37:14

标签: javascript node.js

我正在寻找从网站获取所有可见文字的简便方法。我得到了这个网站的HTML并将其存储在“body”变量中。

我找到了这个解决方案:

var StrippedString = OriginalString.replace(/(<([^>]+)>)/ig,"");

它的效果非常好,但很多网站都有javascript和css。我想在这个页面上分离普通用户阅读内容所有可见的文本,所以我必须省略js脚本等。

I heard that我可以使用jQuery,但事实上我不能因为我使用Node.JS ^^

你有什么想法吗?

4 个答案:

答案 0 :(得分:2)

我相信任何非平凡的事情都可能需要HTML解析器。例如,看看htmlparser2,我自己从未使用它,但看起来它可以帮助你。

答案 1 :(得分:2)

我为我制造的刮刀测试了jsdom,Zombie.js和PhantomJS。虽然所有三种解决方案都能为大多数网站提供准确的结果,但PhantomJS实际上是最稳定的解决方案。阅读:即使有最奇怪的网站,也能够始终如一地获得良好的效果。我用几百个随机网站(以前输入的真实世界示例,而不仅仅是众所周知的网站列表)对我的应用程序进行了压力测试,看起来jsdom和Zombie.js解决方案都崩溃了,或者在大约10%的这些

因为我需要稳定性和准确性而且我的应用程序每分钟只需要处理大约10个请求,所以我只为每个要检查的网站生成幻像进程。结果的沟通是通过stdio完成的。我对这个解决方案非常满意。

我必须说我需要运行脚本所以我不能只使用html解析器。如果您只是想要文本内容并且不关心动态构建的页面,我建议您寻找一个像其他答案中建议的那样体面的htmlparser。

答案 2 :(得分:1)

Node.js +“cheerio”模块。获取页面,将其交给cheerio然后$('body')。text();

答案 3 :(得分:0)

所以,经过一些进一步的研究后,我发现了jsdom,这几乎就是我所需要的。我会尝试用它做的。如果达到预期,我会在那里粘贴一些代码。