Tag: dom

jsdom:使用jQuery将脚本附加到body

如何使用jsdom和jQuery将脚本附加到DOM主体? 使用$('body').append('<script src="…"></script>')的明显答案实际上是在文档head添加脚本。 这是我testing的基本node.js脚本: var jsdom = require('jsdom'); jsdom.env( "http://google.com", ['http://code.jquery.com/jquery-1.6.min.js'], function(err, window) { var $ = window.jQuery; $('body').append('<script src="http://example.com/script.js"></script>'); console.log($('html').html()); } ); 从而导致以下内容开始: <head><script src="http://example.com/script.js?_=1352426933034"></script>… 有趣的是,如果你在<sc ript src="…"></script>添加一个空格,那么正确的添加了一个空格,所以我想要的东西(jsdom)会劫持这个脚本,所以它可以添加cachebuster(?)把它放在标题中。 是什么原因造成的, 如何防止它发生,所以它附加脚本呢? 物有所值, $ npm ls /Users/codyaray/dev/proxy/test └─┬ jsdom@0.2.19 ├─┬ contextify@0.1.3 │ └── bindings@1.0.0 ├── cssom@0.2.5 ├── cssstyle@0.2.3 ├── htmlparser@1.7.6 └─┬ request@2.11.4 ├─┬ form-data@0.0.3 │ ├── […]

在Javascript / Node.js中recursion获取两个元素之间的所有HTML(不包括结束标记)

我需要能够将某些元素分别存储在数据库中,但在检索时重新生成HTML以供显示。 我们的解决scheme(开放build议)是存储条目的leadingHTML和trailngHTML属性。 这应该使我们能够像我们想要的那样灵活 – 但只有一个问题。 我正在试图写代码来parsingHTML。 以下面的HTML为例: <h1>this is leadingHTML</h1> <h2>this is leadingHTML2</h2> <p class='select' id='1'>A1</p> <h1 >this is trailngHTML</h1> <h2>this is trailngHTML2</h2> <p class='select' id='2'>A2</p> <h1>this is trailngHTML3</h1> <h2>this is trailngHTML4</h2> <p class='select' id='3'>A3</p> <figure id='fig'> <figCaption> this is some text <span class='select'>B1</span> <div>some text <span class='select'>B2</span></div> </figCaption> <img class='select' alt='test' src='test.jpg'/> <img class='select' […]

Express和Cheerio / JSDOM

我试图让Cheerio和Express一起工作。 我想能够从服务器上操纵dom,但是我发现的只是网页抓取。 有一些要求.. 目前,我可以运行多个app.listen(port); 语句,并使用多个服务器。 我试图附加<script>alert("test);</script>到快递发送的每一个页面。 我创build了快速服务器:(假设Path是一个预定义的variables) var express = require('express'); var app = express(); app.get('/', function (req, res) { app.use(app.static(Path)); res.sendFile(Path + "/index.html"); }); app.listen(Port); 你们可以给我一个工作的例子,将其附加到页面。 有没有办法让这个实时工作? 谢谢!

即使在重新加载页面期间如何使DOM元素可见?

我想在底部执行一些固定的div,如果用户在我的网站上,不用重新加载它们。 这就像Facebook聊天,用户可以遍布网站,但聊天是可见的? 这个问题是因为我创build了与NodeJS的聊天,当页面刷新时,连接被销毁并重新创build,所以我想在这个页面重新加载的时候使这个连接持久化。 我知道可能的解决scheme,使每个请求Ajax调用,但是…这是无法使用….

如何从节点REPLparsing带有jsdom的DOM

我正在尝试编写一些DOMparsing代码来运行节点REPL环境 。 以下是SSCCE: "use strict"; var jsdom = require("jsdom"); var html="<a></a>"; function parse(html, x) { jsdom.env(html, function(errors, window) { x.window = window; }); } var x = {}; parse(html, x); console.log(x.window); 这个想法是,在调用parse函数后,我会有我的x对象中parsing的DOM可用。 当我把上面的代码放在一个j.js文件中并从REPL中加载时,我得到: > .load j.js > "use strict"; 'use strict' > var jsdom = require("jsdom"); undefined > var html="<a></a>"; undefined > function parse(html, x) […]

是否有可能从DOM获取所有处理指令元素

我有一个包含<?myinst contents ?>forms的处理指令的XML文件。 如果可能的话,我需要在一个集合中使用单个DOM查询来获取它们。 这可能没有迭代所有的树?

从js中用node.js和horseman刮取html

我正试图从这个页面的工资信息刮面糊数组: https : //www.swishanalytics.com/optimus/mlb/dfs-batter-projections 我正在使用node.js和node-horseman。 这是我的代码: var Horseman = require('node-horseman'); var horseman = new Horseman(); horseman.open('https://www.swishanalytics.com/optimus/mlb/dfs-batter-projections'); if (horseman.status() === 200) { console.log('[+] Successful page opening') horseman.screenshot('image.png'); console.log(horseman.html()); } horseman.close(); 问题是从horseman.html返回()仍然是很多的JavaScript,不能提取像cheerio的东西。 我怎样才能以编程方式执行JavaScript? 例如,如果我在相同的链接上查看源代码,则可以看到包含打击者的区域开始 function Model(){ this.batterArray = [{"team_short":"rockies","mlbam_id":"571448","player_name":"Nolan Arenado", 显然,这仍然是JavaScript …我假设在某些时候,它必须执行并转换为HTML浏览器呈现?

Node.jsparsingHTML表格并以JSONforms获得结果

我发现cheerio库parsingHTML节点,并得到表的孩子,并创buildJSON格式,但我不能正确使用,我的代码无法点头。 HTML <table class="Modules" width="180" cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <th align="center" style="padding:2px 5px;" colspan="6"> <span id="ctl00_ucBody_ucContent_ctl00_rptItemList_ctl00_lblTitle" style="font-family: Arial, Tahoma, Helvetica, sans-serif; font-weight: bold; font-size : 1.1em; float:right;">نرخ ارز</span> <span dir="ltr"> <span id="ctl00_ucBody_ucContent_ctl00_rptItemList_ctl00_lblDate" style="font-family: Arial, Tahoma, Helvetica, sans-serif; font-weight: bold; font-size : 1.1em;">۱۳۹۵/۰۵/۲۸</span> </span> </th> </tr> <tr class="ExRate-TR"> <td>USD</td> <td nowrap="">Dollar</td> <td>12345</td> <td> <img width="9" […]

响应string中的未知字符

我想从我的Node.js服务器获取远程DOM 。 一般来说,我得到正确的回应,但在某些情况下,我得到这样的符号 +؃LcBJDIд 这是我的标题 res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); res.header("Accept-Encoding", "gzip,deflate, sdch"); 我能做些什么来获得正确的DOM ?

select带有cheerio属性的元素

什么是最有效的方式来select具有一定属性的所有DOM元素。 <input name="mode"> 如果我不关心属性值,使用普通的javascript我会使用: document.querySelectorAll("[name='mode']")或document.querySelectorAll("[name]") 。