我正在尝试使用带有nodejs的cheerio.js来获取XBRL条目的文本(在本例中为'10 -Q').该行如下:
<dei:DocumentType contextRef="D2013Q3YTD" id="Fact-DB2A50C2A485F9CC21D51934C6E61D42">10-Q</dei:DocumentType>
Run Code Online (Sandbox Code Playgroud)
我试过了:
$('dei:DocumentType').text
Run Code Online (Sandbox Code Playgroud)
和其他一些无济于事.我没有看到唯一的ID或其他任何内容.
样本文件:
http://www.sec.gov/Archives/edgar/data/1018724/000144530513002495/amzn-20130930.xml
Run Code Online (Sandbox Code Playgroud)
那么我怎么能去提取这个文本呢?谢谢.
我是node.js的新手,编写我的第一个脚本来抓取一些数据.
有谁知道为什么我在使用这段代码时会看到里面有问号的奇怪字符?
var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app = express();
var url = 'http://www.ebay.co.uk/csc/all-you-ever-want/m.html?LH_Complete=1&_ipg=50&_since=15&_sop=13&LH_FS=1&=&rt=nc&LH_ItemCondition=3';
request(url, function (error, response, html) {
  if (!error) {
    console.log(html);
    var $ = cheerio.load(html);
    $('.vip').each(function (i, element) {
      var link = $(this).text();
      console.log(link);
    });
  }
});
app.listen(process.env.PORT, process.env.IP)
console.log(process.env.PORT);
exports = module.exports = app;
Run Code Online (Sandbox Code Playgroud)
这是我看到的输出:

谢谢!
安东尼
我有很多调用服务的结果,当服务的所有回调都返回时,我想写一个文件到我的最终集合.有没有办法确保所有回调都完成了?
for (id in idsCollection) {
    object.callService(id, function (res) {
        collection.push(res);
    });
}
filewriter.writetoFile("filename.json", JSon.Stringify(collection));
Run Code Online (Sandbox Code Playgroud)
编辑:只是为了记录我正在使用nodeJS的cheerio.
我试图利用superagent和cheerio从kijiji抓取数据进行学习,而我收到了"无法读取未定义的属性'父级'的错误".(我试过craigslist很好).它发生在我得到正确的结果"对象"之后.cheerio似乎有些不对劲.有没有人对此有任何想法?提前感谢您的帮助.
[ERROR] 17:30:24 TypeError
TypeError: Cannot read property 'parent' of undefined
    at Function.exports.update (C:\Users\zhi_xie\nodejs\neomovie\node_modules\ch
eerio\lib\parse.js:55:25)
    at module.exports (C:\Users\zhi_xie\nodejs\neomovie\node_modules\cheerio\lib
\parse.js:17:11)
    at Function.exports.load (C:\Users\zhi_xie\nodejs\neomovie\node_modules\chee
rio\lib\static.js:19:14)
    at C:\Users\zhi_xie\nodejs\neomovie\routes\crawlerusers.js:35:27
    at Request.callback (C:\Users\zhi_xie\nodejs\neomovie\node_modules\superagen
t\lib\node\index.js:746:30)
    at Request.<anonymous> (C:\Users\zhi_xie\nodejs\neomovie\node_modules\supera
gent\lib\node\index.js:135:10)
    at Request.emit (events.js:95:17)
    at ClientRequest.<anonymous> (C:\Users\zhi_xie\nodejs\neomovie\node_modules\
superagent\lib\node\index.js:921:12)
    at ClientRequest.emit (events.js:95:17)
    at HTTPParser.parserOnIncomingClient [as onIncoming] (http.js:1692:21)
Run Code Online (Sandbox Code Playgroud)
这是代码:
  var superagent = require('superagent');
  var cheerio = require('cheerio');
  var url = require('url');
  var kijijiUrl = 'http://www.kijiji.ca/b-immobilier/ville-de-montreal/c34l1700281?ad=wanted';
  superagent.get(kijijiUrl).end(function (err, res) {
    if (err) {
      return console.error(err);
    }
    var topicUrls = [];
    var …Run Code Online (Sandbox Code Playgroud) 当我在node.js的循环中使用promise时,我遇到了一个问题.下面是一个简单的例子,我使用cheerio来抓取一个网页并执行以下操作:
$('.xyz').each(function(){
  fn1()
  .then(fn2)
  .then(fn3)    
});
function fn1() {
  var deferred = Q.defer();
  console.log("1");
  deferred.resolve();
  return deferred.promise;
}
function fn2() {
  var deferred = Q.defer();
  console.log("2");
  deferred.resolve();
  return deferred.promise;
}
function fn3() {
  var deferred = Q.defer();
  console.log("3");
  deferred.resolve();
  return deferred.promise;
}
Run Code Online (Sandbox Code Playgroud)
我期待最终输出为123123123,但我得到111222333.有人可以解释为什么会发生这种情况.我对node.js很新,可以使用一些帮助.
基本上,我正在尝试从网页获取图像src,以便随后可以下载图像。我尝试过的所有方法均无效。
另外,我对node.js和cheerio还是很陌生,所以请耐心等待。
var  DilbertURL = 'http://Dilbert.com/strip/' + getDateTime();
request(DilbertURL, function (error, response, body) {
    var $ = cheerio.load(body);
    $('div.container-fluid').each(function(i, element){
      var src = $('.img-responsive img-comic').attr("src");
      console.log(src);
    });
});
Run Code Online (Sandbox Code Playgroud)
我尝试获取dilbert图像src的所有操作均不起作用。全部返回“未定义”。图片的html像这样...
<img alt="Wally's Passion  - Dilbert by Scott Adams" 
class="img-responsive img-comic" height="280"    src="http://assets.amuniversal.com/dc0c4f80fd6e0132ef1a005056a9545d" 
width="900">
Run Code Online (Sandbox Code Playgroud)
我到底在做什么错?
我找到了cheerio库来解析HTML节点并获取表的子级并创建JSON格式,但是我不能正确地使用它,并且我的代码也无法得到点头。
<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" height="9" title="" alt="down" src="/Images/down.gif">
        </td>
        <td>
            <input id="ctl00_ucBody_ucContent_ctl00_rptItemList_ctl01_imgChart" />
        </td>
        <td>
            <a id="ctl00_ucBody_ucContent_ctl00_rptItemList_ctl01_hypRSS" href="../ExRatesRSS.aspx?cid=1" alternatetext="RSS">
        </td>
    </tr>
    <tr class="ExRate-TR">
        <td>CHF</td>
        <td nowrap="">Danmark</td>
        <td>78456</td>
        <td>
            <img …Run Code Online (Sandbox Code Playgroud) 我使用cheerio进行一些抓取并想要访问页面上的head js元素(特别是instructables).我可以访问它,但它作为功能返回.
所以用这个:
  console.log($('script').attr('type', "application/ld+json").text);
Run Code Online (Sandbox Code Playgroud)
这提供了'功能'
我认为strinify会工作,但它没有:(
我正在使用Cheerio解析一个简单的网页,并且在可能的情况下徘徊:
使用此结构的html:
<tr class="human">
    <td class="event"><a>event1</a></td>
    <td class="name">name1</td>
    <td class="surname"><a>surname1</a></td>
    <td class="date">2011</td>
</tr>
<tr class="human">
    <td class="event"><a>event2</a></td>
    <td class="name">name2</td>
    <td class="surname"><a>surname2</a></td>
    <td class="date">2012</td>
</tr>
<tr class="human">
    <td class="event"><a>event3</a></td>
    <td class="name">name3</td>
    <td class="surname"><a>surname3</a></td>
    <td class="date">2013</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
一旦我得到了它相匹配的所有cheerio对象tr.human我希望能够通过他们循环在班值映射选择name,surname等来的对象。
到目前为止,我实现了这一点:
var cheerio = require('cheerio');
var fs = require('fs')
fs.readFile('./humans.html', 'utf8', function (err,data) {
    if (err) {
        return console.log(err);
    }
    const $ = cheerio.load(data)
    var results = $('tr.human')
    results.each(function(i, result){
       var date = result.children[3]
       var name = result.children[1] …Run Code Online (Sandbox Code Playgroud) 我正在尝试选择strong a.info类内的标签
$(".info").each(function(i, item){
    console.log($(this).children("strong a").text())
});
Run Code Online (Sandbox Code Playgroud)
它正确选择了信息类,而不是 strong a
cheerio ×10
node.js ×8
javascript ×6
jquery ×2
dom ×1
html ×1
html-parsing ×1
parsing ×1
promise ×1
superagent ×1
xbrl ×1