我需要解析(服务器端)大量的HTML页面。
我们都同意,regexp不是行之有效的方法。
在我看来,javascript是解析HTML页面的本机方式,但是这种假设取决于服务器端代码,该代码具有javascript在浏览器内部具有的所有DOM功能。
Node.js是否具有内置的功能?
有没有更好的方法来解决此问题,请在服务器端解析HTML?
我需要解析(服务器端)大量的HTML页面。
我们都同意,regexp不是行之有效的方法。
在我看来,javascript是解析HTML页面的本机方式,但是这种假设取决于服务器端代码,该代码具有javascript在浏览器内部具有的所有DOM功能。
Node.js是否具有内置的功能?
有没有更好的方法来解决此问题,请在服务器端解析HTML?
Answers:
您可以使用npm模块jsdom和htmlparser在Node.JS中创建和解析DOM。
其他选项包括:
在所有这些选项中,我更喜欢使用Node.js选项,因为它使用了标准的W3C DOM访问器方法,并且我可以在客户端和服务器上重用代码。我希望BeautifulSoup的方法与W3C dom更相似,并且我认为将HTML转换为XHTML以编写XSLT简直是可悲的。
使用Cheerio。它不像jsdom那样严格,并且针对抓取进行了优化。另外,使用您已经知道的jQuery选择器。
❤熟悉的语法:Cheerio实现了核心jQuery的子集。Cheerio从jQuery库中消除了所有DOM不一致和浏览器残骸,从而揭示了其真正华丽的API。
ϟ快速发展:Cheerio使用非常简单,一致的DOM模型工作。结果,解析,操作和渲染都非常高效。初步的端到端基准测试表明,cheerio比JSDOM快8倍。
flexible非常灵活:Cheerio将@ FB55宽容的htmlparser环绕起来。Cheerio可以解析几乎任何HTML或XML文档。
jsdom
太慢了:/
FB55的Htmlparser2似乎是一个不错的选择。
jsdom过于严格,无法执行任何实际的屏幕抓取操作,但是beautifulsoup不会因不良标记而窒息。
node-soupselect是python的beautifulsoup移植到nodejs的端口,它的工作原理很漂亮