如何使用Node / JS以编程方式获取浏览器呈现的字符串,就像在浏览器窗口中复制所有内容一样?
例如,对于给定的HTML源(注意“ a”和“ z”之间的空格):
<html><head></head><body>a z</body>
它在Chrome中以单个空格呈现:
如何用单个空格a z
获得此字符串?
我尝试使用Cheerio和Jsm,但是在将<html><head></head><body>a z</body>
加载为字符串并查询body
的内容之后,我得到了原始代码,其中有很多空格。
谢谢。
答案 0 :(得分:0)
很好的问题,但是我认为没有可行的方法。
首先,本文When does white space matter in HTML?对发生的事情进行了详尽的解释。
由于空格不会移到任何地方,而只能由浏览器表示,因此很难在服务器端进行故障排除。原因有:
您不知道它将在哪个浏览器中呈现,甚至可能是Lynx
,它将显示空格还是您不知道的空格。
这意味着,如果可能的话,您将不得不在野外的每个浏览器上进行测试。
例如,服务器端呈现(SSR)技术在服务器端部分地应用/呈现页面,但是仍然因为实际上没有设备可以显示页面,所以它是部分的。因此最有可能获得相同的空格。
想象中可能的解决方案是使用KarmaJS之类的东西,在服务器端安装一些无头浏览器,并执行一些测试用例,以便KarmaJS可以控制浏览器来呈现页面,并且也许您将能够访问渲染,CSS应用以及希望进行空间修剪的DOM。我不确定,这将是一组有限的浏览器。
另一个可能的解决方案是使用WebKit或Blink引擎,或者也许使用Electron,以某种方式通过API尝试获取该DOM。