繁体   English   中英

如何在 node.js 上使用 cheerio 获得价值

[英]How to get value with cheerio on node.js

如何在node.js上使用 cheerio 获取源代码的 IMVALUE?

元素/查看来源:

<div class="e7m mess_bodiyy">
  <p style="max-width: 600px">
    Hello x7907062441,
    <br />
    <br />
    This is the value:
    <br />
    <a href="http://mywebsite.com" target="_blank" rel="nofollow">
      IMVALUE
    </a>
    .<br />
    <br />
  </p>
</div>

我试过

const src = $('<div class="e7m mess_bodiyy"></div>').

但结果是不确定的。

术语技术性:那是text ,而不是value

这是一个值(它是一个特定的属性):

<input value="some value">

(您可以使用$("input").val()或 select 获得它$('[value="some value"]')

这是文字:

<p>some text</p>

(你用$("p").text()得到它)


您不需要 select 并通过传入 HTML 来遍历 CSS。如果您想像这样进行 substring 检查,则可以在没有 Cheerio 的情况下对纯字符串进行检查。 但这没有用,因为在 HTML 中,我们想要忽略空格和属性的顺序。 对于字符串,很难确定哪些元素是其他元素的祖先。 Cheerio将字符串解析成CSS个选择器遍历的树,解决了这些问题。

让我们在字符串上使用带有 CSS 选择器的 Cheerio:

const cheerio = require("cheerio"); // 1.0.0-rc.12

const html = `<Your HTML>`;
const $ = cheerio.load(html);
console.log($(".e7m.mess_bodiyy a").text().trim()); // => IMVALUE

这个选择器说“找到<a>元素,它是具有类e7mmess_bodiyy的元素的某个后代,以任何顺序排列”。


现在,根据讨论,如果这没有记录任何内容,也许您正在从浏览器开发人员工具中获取 HTML,其中包括页面加载后由 JavaScript 注入的元素。如果您正在执行一个简单的 HTTP 请求来检索static HTML,您可能看不到在开发工具中可见的相同元素。 如果是这种情况,您将需要不同于 Cheerio 的工具,例如 Puppeteer。 请参阅如何使用 node.js 抓取包含动态内容的页面? 了解详情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM