服务器端的jQuery

假设我有用Perl或Python编写的脚本。 什么是最简单的方法来编写一个函数,将string的jQueryselect器作为它的一部分? 即能够做到:

jquery_selector('table.new#element', text) 

jquery_selector是一个在存储在text的htmlstring上运行jqueryselect器的函数。 即使只是返回string(不是完整的jquery对象),它仍然是非常有用的。 也就是说,如果您被要求提供一个javascript函数作为一个callback函数,这个callback函数将会使得结果在脚本语言中被理解:

 jquery_selector('table.new#element, text, 'function(e){return e.val()}') 

它会将callback的结果作为列表返回。

我意识到大多数语言都有dom库,但jquery比大多数语言都好。

我不问有像jquery语法的本地库。 我想是什么需要是一个浏览器的jQuery将运行的API? 或者,这是什么node.js做?

如果我正确理解你的问题,你想是像phantom.js 。 PhantomJS是一个带JavaScript API的无头WebKit。 你可以注入jQuery,并使用所有的jQueryselect器来操纵dom。 你可以使它像一个独立的服务器一样工作。

我很困惑,因为你用“node.js”标记了这个问题,尽pipe你在你的问题中引用了Python或者Perl。 运行node.js和/或phantom.js只是为了在HTML DOM上运行一个select器,对我来说听起来相当重要,并且一直引入整个链的依赖关系应该在实际项目中仔细考虑。

所以对于Python,我会build议运行BeautifulSoup和soupselect的组合,正如在这个答案中所提到的。 然后你可以做这样的事情:

 from BeautifulSoup import BeautifulSoup as Soup from soupselect import select import urllib soup = Soup(urllib.urlopen('http://slashdot.org/')) select(soup, 'div.title h3') 

请注意,soupselect似乎只实现了jQuery的CSS3select器的一个子集,所以对于像兄弟select器或伪类这样的东西可能无法正常工作。 在这种情况下,我build议考虑将项目的相关部分移植到node.js中,您可以在稍微轻量级的环境中运行Sizzle (jQuery的select器引擎)或cheerio standalone。