服务器端jquery

时间:2012-06-29 02:09:02

标签: jquery node.js server-side

假设我有一个用perl或python编写的脚本。编写一个在字符串上使用jquery选择器作为其中一部分的函数最简单的方法是什么?即能够:

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

其中jquery_selector是一个在text中存储的html字符串上运行jquery选择器的函数。即使它仅限于返回字符串(不是完整的jquery对象),它仍然非常有用。即如果你被要求提供一个javascript函数作为回调,这将使结果呈现在脚本语言中可理解的东西:

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

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

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

我不是要问有像jquery这样的语法的本地库。我想需要的是一个jquery运行的浏览器的API?或者这是node.js的作用吗?

2 个答案:

答案 0 :(得分:4)

如果我理解你的问题你想要的是phantom.js。 PhantomJS是一个带有JavaScript API的无头WebKit。你可以将jquery注入其中并使用所有jquery选择器来操作dom。你可以使它像独立的服务器一样工作。

答案 1 :(得分:0)

我很困惑,因为你用“node.js”标记了这个问题,尽管你在问题中引用了Python或Perl。运行node.js和/或phantom.js只是为了在HTML DOM上运行一个选择器听起来非常重要,并且在实际项目中应该仔细考虑引入整个依赖链。

因此,对于Python,我建议运行BeautifulSoupsoupselect的组合,如this answer中所述。然后你可以做以下事情:

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的CSS3选择器的一个子集,所以对于像兄弟选择器或伪类可能不起作用。在这种情况下,我建议考虑将项目的相关部分移植到node.js,你可以在一个有点轻量级的环境中独立运行Sizzle(jQuery的选择器引擎)或cheerio