使用 node.js 抓取时使用 jQuery 访问 CSS 值

Posted

技术标签:

【中文标题】使用 node.js 抓取时使用 jQuery 访问 CSS 值【英文标题】:Access CSS values with jQuery when scraped with node.js 【发布时间】:2012-04-24 05:51:40 【问题描述】:

我正在使用 node.js(基本上)抓取页面,然后 jQuerify 结果以访问某些元素的 CSS 值。但是,由于某种原因, .css("something") 总是返回一个空值。例如。但是,.text() 工作正常。有什么提示吗?是否需要先输出抓取的页面才能访问 CSS?

var request = require('request');
var jsdom = require('jsdom');

var req_url = 'URL';

request(uri: req_url, function(error, response, html)
    if(!error && response.statusCode == 200)
        var window = jsdom.jsdom(html).createWindow();
        jsdom.jQueryify(window, 'http://code.jquery.com/jquery-1.4.2.min.js', function() 
            var bg = window.$("#ID").css("color");
            console.log(bg);
        );
    
);

【问题讨论】:

【参考方案1】:

我认为 .css() 只会返回给定元素的内联 css。

不幸的是,如果没有活动的浏览器,您将很难做到。

您应该研究一下 PhantomJS——它很容易与 node.js 结合,并充当一个无头 webkit,您可以将 javascript 注入其中。

【讨论】:

我认为连内联css都无法读取。但是 phanom.js 确实看起来非常好,并且适合这项任务。谢谢。

以上是关于使用 node.js 抓取时使用 jQuery 访问 CSS 值的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 访问站点中的 DOM

Node.js 和 MongoDB:保存集合还是每次都抓取它们?

[js高手之路]Node.js实现简易的爬虫-抓取博客所有文章列表信息

使用 jsdom 和 node.js 发布表单

如何使用 node.js 抓取具有动态内容的页面?

在 Node.Js 中使用请求抓取 javascript 生成的内容