Articles of jsdom

在cloudfoundry JSDOM scraping不起作用

我使用的jsdom node.js模块的应用程序,做一些网页抓取,以获得所需的一些数据。 当我在本地运行时,这工作得很好。 但是,当我将应用程序推向cloudfoundry时,它崩溃了。 日志如下: ====> /logs/stderr.log <==== /var/vcap/data/dea/apps/caretogethersandbox-0-8b20af9255bbf552d0f490cb60d0df55/app/node_modules/jsdom/lib/jsdom.js:171 features = JSON.parse(JSON.stringify(window.document.implementation._fea ^ TypeError:无法读取未定义的属性“实现” 有什么我在这里失踪? 我很难过 我知道我写的代码工作正常,这似乎是模块和cloudfoundry之间的问题。

使用基于浏览器的模板引擎从网站中删除数据

试图从浏览器中使用大量JS的页面中取消数据。 而当用jsdom播放无法获得任何数据,也许页面没有足够的时间来加载或渲染。 在这种情况下如何报废数据:使用计时器或按要求下载所有页面 jsdom.env({ url: link, scripts: ["http://code.jquery.com/jquery.js"], done: function (errors, window) { var $ = window.$; var date = $('.date').text(); console.log(date); } });

使用jsdom时出现“调度事件”DOMNodeInsertedIntoDocument“失败”错误

我正在考虑使用JSDom的项目,需要刮一个网站。 我开始尝试一个亚马逊网页。 这是一个示例代码: jsdom.env(url, ["http://code.jquery.com/jquery.js"], function(errors, window) { console.log(errors); var $ = window.$, results = parseResultsPage($); //do some stuff window.close(); }); 起初,我有一个if(errors.length > 0) …子句,但事实certificate, errors总是充满的。 即使拼抢本身有效,我得到所有我需要的结果,我总是得到: [ { type: 'error', message: 'Dispatching event \'DOMNodeInsertedIntoDocument\' failed', data: { error: [Object], event: [Object] } } ] 这意味着我无法有效地testing错误。 简单地忽略这个错误对我来说是不安全的。 有什么build议么? 这可能是亚马逊相关的问题吗? (他们在他们的页面上使用jQuery 1.2.6) 更新 : 在JSDom github页面( […]

jsdom / cheerio大大改变HTML

我想刮一个网站,我有问题与jsdom和cheerio戏剧性地改变他们得到的html。 最值得注意的是,他们删除了一些标签,如table / tr / td标签等 只要有一个本地文件说1.html和做: // with cheerio -> or equivalent with jsdom var $ = require('cheerio').load(fs.readFileSync(path)); fs.writeFileSync('2.html', $.html()); # bash $> diff 1.html 2.html ….. < <tr><td colspan="5"><a id="stats" name="stats"></a><div class="titlebar1" style="margin-top: 12px;margin-bottom: 4px;"><h2>Stats</h2><div class="element"><img src="img/element/10.png" /></div><div class="elementborder"><img src="img/elementborder.png" /></div></div></td></tr></table></td></div> — > <tr><td colspan="5"><a id="stats" name="stats"></a><div class="titlebar1" style="margin-top: 12px;margin-bottom: 4px;"><h2>Stats</h2><div class="element"><img src="img/element/10.png"></div><div […]

JSDom不加载相关的脚本

所以我试图用jsdombuild立一个摩卡testing,经过多次debugging,我把问题的范围缩小到jsdom执行绝对URL脚本(例如http://code.jquery.com/jquery-2.1.3.min.js ),但不是相对的URL脚本(例如js/script.js )。 我的test.js如下: var assert = require("assert"); var fs = require('fs'); var jsdom = require("jsdom"); describe('Foo Test', function(){ it('Foo Check', function(done){ this.timeout(5000); jsdom.env({ html: fs.readFileSync('index.htm') ,features: { FetchExternalResources: ["script"] ,ProcessExternalResources: ["script"] } ,done: function(errors, window){ if(errors != null) console.log('Errors', errors); var $ = window.$; // $ is defined var foo = window.foo; //foo is […]

通过JSDom的JQuery不是一个赋予TypeError的函子

IO.js 1.3.0在Windows上使用带有Mocha 2.0.1的JSDOM 4.0.1和jQuery 2.1.1 以下代码: var chai = require('chai'); var jsdom = require('jsdom'); describe('JSDOM', function () { var $; beforeEach(function () { global.document = jsdom.jsdom('<html><body><section id="banner"></section></body></html>'); global.window = global.document.defaultView; global.navigator = global.window.navigator; $ = global.jQuery = require('jquery')(global.window); }) it('Using jquery', function () { var dom = $("#banner"); }); }); 当使用JQueryselect器作为函子时(例如$(…)), TypeError:object的错误不是函数 。 任何人遇到这个,并有一个解决方法?

Quill.js和zombie.js

试图在zombie.js无头浏览器中testingquill.js编辑器(contenteditable div)。 抱怨关于document.getSelection丢失 抱怨关于document.createTreeWalker丢失 如果我使用编辑器的DOM节点手动分派更改事件,似乎没有响应。 任何人都知道如何做这个工作?

无法与node.js安装jquery – 无法加载Contextify

更新 – 请参阅post的底部 我试图在node.js中设置jquery,并有一些麻烦。 如上所述,我正在安装jquery与npm install jquery并执行我的JavaScript作为脚本从命令行,而不是运行它作为服务器。 有几点需要注意: OS X 10.7.3 node.js版本0.6.11 npm版本1.1.1 节点waf版本1.5.16 所以,从包含我的节点脚本的目录,我npm install jquery 。 terminal然后closures5秒钟,并做了一些事情,特别是,下载模块和构buildcontextify。 最后,消息'build' finished successfully 。 另外,从安装日志中我看到: htmlparser 1.7.4 jsdom 0.2.10 我尝试运行我的脚本: ./script.js ,但是这是输出: Internal Contextify ERROR: Make sure Contextify is build with your current Node version. To rebuild, go to the Contextify root folder and run 'node-waf […]

如何在Node.js中高效地进行网页抓取?

我试图从购物网站Express.com刮取一些数据。 以下是许多含有图片 , 价格 , 标题 , 颜色的产品中的一种 。 <div class="cat-thu-product cat-thu-product-all item-1"> <div class="cat-thu-p-cont reg-thumb" id="p-50715" style="position: relative;"><a href="/rocco-slim-fit-skinny-leg-corduroy-jean-50715-647/control/show/3/index.pro" onclick="var x=&quot;.tl(&quot;;s_objectID=&quot;http://www.express.com/rocco-slim-fit-skinny-leg-corduroy-jean-50715-647/control/show/3/index.pro_1&quot;;return this.s_oc?this.s_oc(e):true"><img class="cat-thu-p-ima widget-app-quickview" src="http://t.express.com/com/scene7/s7d5/=/is/image/expressfashion/25_323_2516_900/i81?$dcat191$" alt="ROCCO SLIM FIT SKINNY LEG CORDUROY JEAN"></a><a href="#jsLink"><img id="widget-quickview-but" class="widget-ie6png glo-but-css-off2" src="/assets/images/but/cat/but-cat-quickview.png" alt="Express View" style="position: absolute; left: 50px;"></a></div> <ul> <li class="cat-cat-more-colors"> <div class="productId-50715"> <img class="js-swatchLinkQuickview" title="INK BLUE" src="http://t.express.com/com/scene7/s7d5/=/is/image/expressfashion/25_323_2516_900_s/i81?$swatch$" width="16" […]

jQuery发现在Node.js中无法正常工作

我正在使用jQuery来查询Node.js中由jsdom创build的dom: var html = '<p class="widget">one</p><p class="widget">two</p><p class="widget">three</p>'; var jsdom = require('jsdom'); var jquery = require('jquery'); var document = jsdom.jsdom(html); var widgets = jquery(document.parentWindow).find('.widget'); var arr = widgets instanceof Array; //true widgets.each(function() { }) //each is not defined, its not a jquery object 我知道这个文件很好。 它包含3个元素与类widget 。 但是,jQuery的find函数返回这些dom元素的常规JS数组,而不是一个包装了dom元素集合的jQuery对象。 显然,由于返回值是一个JS数组,所以我不能链接更多的jQuery函数。 我得到的错误是: TypeError: Object [object HTMLDivElement],[object HTMLDivElement],[object HTMLDivElement] […]