npm渗透。我如何获得元素的属性?

时间:2018-12-10 08:00:52

标签: javascript node.js cheerio osmosis

页面的部分HTML代码

<div name="price" class="detail-price-test">
  <meta itemprop="price" content="3303">
  <meta itemprop="priceCurrency" content="test">
  <span id="price_label">3 303</span><span class="detail-price-test-sign" id="price_label_sign"> eur</span>
  <script>
    if (price_json.price != '0') {
    var price_container = document.getElementById('price_container'),
    price_cheaper_selector = 'detail-price-cheaper';
    document.getElementById('price_label').innerHTML = price_json.price_formatted;
    document.getElementById('price_label_sign').innerHTML = "&thinsp;eur";
    if (parseFloat(price_json.old_price) >
    parseFloat(price_json.price) &&
    price_container &&
    !price_container.hasClass(price_cheaper_selector)
    ) {
    price_container.addClass(price_cheaper_selector);
    }
    }
  </script>
  <link itemprop="availability" href="http://schema.org/InStock">
</div>

1)第一个问题:我如何从元itemprop =“ price”中提取值为3303的attr内容? 还是渗透,这是不可能的?

2)第二个问题:为什么我无法在此<span id="price_label">3 303</span>中获得价值3303

osmosis
.get('myURL.com')
.find('div.detail-price-test span#price_label') //or div.detail-price-test span[id=price_label]
.set('test')
.data(console.log);

cosole中的结果:测试:

也许JavaScript脚本中的问题和渗透不能解决这个问题?

2 个答案:

答案 0 :(得分:0)

在Cheerio中是:

$('[itemprop="price"]').attr('content')

渗透?不知道,我从未听说过。

答案 1 :(得分:0)

您的选择器不正确。

第一个问题的答案: 选择器应为:df$time <- format(mdy(df$time),"%d/%m/%Y) 您可以执行以下操作:

'meta[itemprop="price"]@content'

第二个问题的答案: 正确的选择器是

  1. osmosis .get('myURL.com') .find('meta[itemprop="price"]@content') .set('price') .data(console.log) // {price : 3303}
  2. 'div.detail-price-test > span#price_label'
  3. 'span#price_label'

做类似的事情:

'#price_label'