【问题标题】:Access specific div using cheerio使用cheerio访问特定的div
【发布时间】:2019-09-17 01:50:14
【问题描述】:

我正在尝试使用cheerio 来访问HTML 中div 中的一个字符串。

这是div 在网站上的样子:

<div class="_6wae">Only 5 Hours Left/div>

我已尝试在此处使用此代码访问div

let $ = cheerio.load(html);
const info = $('._6wae');
console.log(info.text());

当我运行 JS 时,它似乎工作到了一半......我在控制台上得到一个空行,文本应该在哪里。

提前感谢您的回答!

【问题讨论】:

  • 你能分享一下你正在使用cheerio解析的HTML吗?
  • facebook.com/donate/2486339634914015 这是我试图解析的 Facebook 帖子。我想知道筹款活动还剩多少天。
  • 确保在您的 html 文件中有该 div。它可以通过 javascript 即时创建。您需要从 selenium + chromedriver 或其他抓取解决方案中获取它。
  • 在使用 Chrome Inspector 检查页面时,它似乎实际上在 HTML 中。如果我错了,请纠正我。
  • 是的,运行 curl -vs https://www.facebook.com/donate/2486339634914015/ 证实了这一理论。

标签: javascript cheerio


【解决方案1】:

显然,Facebook 根据用户代理标头返回不同的有效负载。

尝试以下方法:

const cheerio = require('cheerio');
const request = require('request');
request({
  method: 'GET',
  url: 'https://www.facebook.com/donate/2486339634914015/',
  headers: {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0'
  }
}, function (error, response, body) {
  const $ = cheerio.load(body);
  var element = $('._6wae');
  console.log(element.text());
});

尽管上述方法可行,但它可能是一个临时解决方案,因为 Facebook 可能会频繁更改 _6wae 类。

【讨论】:

  • 感谢您的回复!我做了建议的更改,它解决了我的问题:)
  • 总是很开心。快乐的黑客攻击!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 2018-04-04
  • 1970-01-01
相关资源
最近更新 更多