Tag: cheerio

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" […]

select带有cheerio属性的元素

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

返回使用nodejs抓取网页的url

我正在尝试构build一个简单的Web应用程序,使用nodejs及其2个模块请求和cheerio来抓取网站。 我设法用下面的代码来完成它: var printURL=function(url){ request(url, (function() { return function(err, resp, body) { if (err) throw err; $ = cheerio.load(body); $('img').each(function(){ console.log($(this).attr('src')); }); } } )()); }; 它在网站上打印图片的URL是正常的,但我真正想要做的是创build一个我可以在函数外部使用的url列表。 我试过这样,但它返回一个空的列表: var urlList=[]; var printURL=function(url){ request(url, (function() { return function(err, resp, body) { if (err) throw err; $ = cheerio.load(body); $('img').each(function(){ urlList.push($(this).attr('src')); }); } } )()); }; 我怎样才能解决这个问题? […]

Scrapy就像Nodejs的工具?

我想知道是否有像Scrapy这样的nodejs? 如果不是,你觉得使用简单的网页下载和parsing它使用cheerio? 有没有更好的办法。

如何使用cheerio解开子元素?

我正在使用node.js 我正在使用cheerio htmlparsing器来读取一个html文档。 在这个例子中 <div class="abc"> <a id="ddd"/> sample </div> 我试过这个 var cheerio = require('cheerio'); var c$ = cheerio.load(/*html content*/); var cntext = c$('div').html(); cntext包含所需的div及其所有子项。 我怎样才能删除div,只保留子节点? 提前致谢。

Node.js和Cheerio分析表与select器

我试图parsing一个HTML表,使用Node.js和Cheerio,我得到了一些结果,但不幸的是我得到太多的数据,我不知道如何parsing它进一步得到只有我需要的数据。 这是我到目前为止的一小段代码。 var request = require("request"); var cheerio = require("cheerio"); request('http://www.myURL.com', function(error, response, body) { var $ = cheerio.load(body); $('td').each(function() { console.log($(this).text()); }); }); 使用Chrome插件findselect器,我发现我需要“.clickableRow TD”,但是我试图插入这个插件的每一种方式似乎都不起作用。 为了更清楚一点,HTML源代码看起来像这样 – <html> <body> <form> <table> <tbody> <td> <table class="standardTable"> <tbody> <tr class="clickableRow"> <td>first thing I want</td> <td>second thing I want</td> <td>third thing I want</td> <td>fourth thing I want</td> […]

如何使用Cheerio js删除<div>和<br>?

我有以下的html,我喜欢通过Cheeriosparsing。 var $ = cheerio.load('<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div>This works well.</div><div><br clear="none"/></div><div>So I have been doing this for several hours. How come the space does not split? Thinking that this could be an issue.</div><div>Testing next paragraph.</div><div><br clear="none"/></div><div>Im testing with another post. This post should work.</div><div><br clear="none"/></div><h1>This is for test server.</h1></body></html>', […]

链接承诺不使用多个“那么”

我正在学习如何使用Promise。 我有以下函数返回“i”xkcd漫画标题作为承诺: var xkcd = function(i) { return new Promise( function(resolve, reject) { var tempurl = 'https://www.xkcd.com/' + i; request(tempurl, function(error, response, body) { if (error) reject(error); var $ = cheerio.load(body); resolve($('title').text() + '\n'); }); }); }; 如果我想要得到前4个冠军,我就把我的.then()这样链接起来: var result = ''; xkcd(1) .then(fullfilled => { result += fullfilled; }) .then(() => xkcd(2)) .then(fullfilled => […]

在没有孩子的家长中使用cheerio获取文本

我正在尝试使用cheerio来提取div的内容 – 没有该div的任何子项。 如果我只是使用div.text() – 我得到所有文本 – 父母和子女。 这里是HTML – 我只想要值“5.25” 下面的代码目前返回“购买价格$ 5.25” 下面的HTML: <div class="outer tile"> < … various other html here > <div class="cost"> <span class="text">Purchase price </span> <small>$</small>5.25 </div> </div> 与下面的相关node.js CHEERIO代码的摘录: var $ = cheerio.load(data); $("div.outer.tile").each(function(i, e) { var price = $(e).find('div.price'); console.log(price.text()); });

每个和callback

我正在使用请求和cheerio节点模块创build从网站获取一些数据。 我想获得一个项目列表,一旦这个列表完成,调用一个asynchronous函数: request('http://myurl', function(req,res,data){ var $ = cheerio.load(data); var List = []; $('.myItems').each(function(i, element){ console.log( typeof $(this).text() ) List.push($(this).text()); }); for (var i=0; i < List.length; i++){ // make an asynchronous call to a API } }); 我的问题是我如何等待列表完成,即我怎么能知道.each函数已遍历所有项目? 我可以用asynchronous吗? 谢谢