Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript npm渗透。如何获取元素的属性?_Javascript_Node.js_Cheerio_Osmosis - Fatal编程技术网

Javascript npm渗透。如何获取元素的属性?

Javascript npm渗透。如何获取元素的属性?,javascript,node.js,cheerio,osmosis,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-si

页面的部分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>
cosole中的结果:测试:“”

也许
JavaScript
script中的问题和渗透不能与此一起工作?

在Cheerio中,它是:

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

渗透作用?不知道,我从没听说过。你的选择器不正确

第一个问题的答案: 选择器应该是:
'meta[itemprop=“price”]@content'
您可以这样做:

osmosis
.get('myURL.com')
.find('meta[itemprop="price"]@content')
.set('price')
.data(console.log) // {price : 3303}
第二个问题的答案: 正确的选择器是

  • “div.detail-price-test>span#price_标签”
  • “span#价格标签”
  • “#价格标签”
  • 做一些类似于:

    osmosis
    .get('myURL.com')
    .find('div.detail-price-test > span#price_label')
    .set('test')
    .data(console.log); // {test : 3...}
    

    我还登记了cheerio。不要在这个元素上做得太多。你好,约翰,请看我的答案。您需要更新selector.thx,但在cheerio中,我已经知道attr(),我需要了解OSMOSISIS中的这种可能性如果我是您,我会删除项目的依赖项。这是一个爱好库,不要低估了潜移默化。是的,它有优点和缺点,但对于爬行肯定非常有用。没有一个图书馆的爬行速度能超过渗透所能做到的。它有它的目的。那时候我用的是cheerio。我也试过硒、木偶、噩梦、幻影。但每当我需要快速刮东西时,我总是回到渗透状态。
    osmosis
    .get('myURL.com')
    .find('div.detail-price-test > span#price_label')
    .set('test')
    .data(console.log); // {test : 3...}