Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从站点服务器端获取文本_Javascript_Node.js - Fatal编程技术网

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

Javascript 如何从站点服务器端获取文本,javascript,node.js,Javascript,Node.js,我正在寻找一种简单的方法,从网站上获取所有可见的文本。我得到了这个网站的HTML,并将其存储在“body”变量中 我找到了这个解决方案: var StrippedString = OriginalString.replace(/(<([^>]+)>)/ig,""); var StrippedString=OriginalString.replace(/(]+)>)/ig,”; 它的效果非常好,但是很多网站都有javascript和css。我想分离所有可见的文本,供普通用户阅

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

我找到了这个解决方案:

var StrippedString = OriginalString.replace(/(<([^>]+)>)/ig,"");
var StrippedString=OriginalString.replace(/(]+)>)/ig,”;
它的效果非常好,但是很多网站都有javascript和css。我想分离所有可见的文本,供普通用户阅读此页面上的内容,所以我必须省略js脚本等

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


你有什么想法吗?

我相信对于任何非琐碎的事情,你都可能需要一个HTML解析器。例如,看一看,我自己从未使用过它,但它似乎可以帮助您。

我相信,对于任何非琐碎的事情,您可能都需要一个HTML解析器。例如,看一看,我自己从未使用过它,但它似乎可以帮助您。

因此,经过进一步的研究,我发现,这几乎是我所需要的。我将试着用它做某事。如果它达到预期效果,我会在那里粘贴一些代码。

因此,经过进一步的研究,我发现,这几乎是我所需要的。我将试着用它做某事。如果它达到预期效果,我将在那里粘贴一些代码。

我测试了jsdom、Zombie.js和PhantomJS,用于我构建的刮板。虽然这三种解决方案都能为大多数网站提供准确的结果,但PhantomJS实际上是最稳定的解决方案。阅读:即使有最奇怪的网站,它也能始终如一地取得好成绩。我用几百个随机网站(来自以前输入的真实世界示例,而不仅仅是一系列知名网站)对我的应用程序进行了压力测试,jsdom和Zombie.js解决方案似乎都崩溃了,或者在其中10%的网站上没有给出足够的结果

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


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

我测试了jsdom、Zombie.js和PhantomJS,以获得我构建的刮刀。虽然这三种解决方案都能为大多数网站提供准确的结果,但PhantomJS实际上是最稳定的解决方案。阅读:即使有最奇怪的网站,它也能始终如一地取得好成绩。我用几百个随机网站(来自以前输入的真实世界示例,而不仅仅是一系列知名网站)对我的应用程序进行了压力测试,jsdom和Zombie.js解决方案似乎都崩溃了,或者在其中10%的网站上没有给出足够的结果

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


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

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

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

如果正确阅读链接问题的已接受答案,您会注意到它没有使用任何jQuery。但也要注意,你的问题有点不同,远不是琐碎的。例如,文本可以通过CSS规则隐藏。@FelixKling现在,我必须从站点获取文本,稍后我会担心CSS。如果您正确阅读链接问题的已接受答案,您会注意到它不使用任何jQuery。但也要注意,你的问题有点不同,远不是琐碎的。例如,文本可以通过CSS规则隐藏。@FelixKling现在,我必须从站点获取文本,稍后我会担心CSSso,这是我尝试从duckduckgo.com读取文本时得到的结果:仍然返回javascriptJust do
$('script')。remove()事先。很可能您不希望页面(菜单等)中包含所有文本,因此可以将感兴趣的部分作为目标,
eg$('#content').text()很好的一点是,您可以打开页面上的浏览器控制台,并假设页面使用jQuery,使用选择器获得您想要的内容-我使用
$('blah').css({outline:'1px solid red'})
突出显示选择器匹配的内容-然后在Node.js/cheerio code.duckduckgo中使用相同的选择器。duckduckgo都是基于js的。您需要首先在PhantomJS中打开页面以获得最终呈现的页面。因此,这就是我在尝试从duckduckgo.com读取文本时得到的结果:仍然返回javascriptJust do
$('script')。remove()事先。很可能您不希望页面(菜单等)中包含所有文本,因此可以将感兴趣的部分作为目标,
eg$('#content').text()很好的一点是,您可以打开页面上的浏览器控制台,并假设页面使用jQuery,使用选择器获得您想要的内容-我使用
$('blah').css({outline:'1px solid red'})
突出显示选择器匹配的内容-然后在Node.js/cheerio code.duckduckgo中使用相同的选择器。duckduckgo都是基于js的。您需要首先在PhantomJS中打开页面,以获得最终呈现的页面。