Cheerio attributeStartsWith选择器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cheerio attributeStartsWith选择器相关的知识,希望对你有一定的参考价值。

我正在使用cheerioscrapewebsite。我想选择id以某个值开头的所有元素。但是当我在attributeStartsWith中使用jQuery时,我得到了malformed attribute selector语法错误。

你可以在jQuery中选择以'question-summary-'开头的所有div元素

$('div[id^="question-summary-"')

我的node代码看起来像这样

const cheerio = require('cheerio')
const $ = cheerio.load('https://stackoverflow.com/')

console.log('text', $('div[id^="question-summary-"').text())

我怎样才能在cheerio中实现这一目标?还有另一种方法吗?

答案

你有语法错误:)

更改

console.log('text', $("div[id^='question-summary-'").text())

console.log('text', $("div[id^='question-summary-']").text())

完整代码

const $ = cheerio.load('https://stackoverflow.com/')

console.log('text', $("div[id^='question-summary-']").text());

干杯

另一答案

你试过用吗?

$("[id|='question-summary']")

相反?

as | =正在查看''后跟连字符的内容。

另一答案

我现在看到我有一个拼写错误,奇怪的是它完全被jQuery排除。修正了拼写错误,现在可行了。 Cheerio是对的,jQuery应该更加不可原谅。

老选择器

$('div[id^="question-summary-"')

新的选择器

$('div[id^="question-summary-"]')

注意最后的括号。

奇怪的是,第一个选择器完全被jQuery排除。要测试旧选择器,请转到stackoverflow.com,输入F12并将其粘贴到控制台中。你会看到两个选择器都在工作。

另一答案

我一直对你的问题感到好奇......

将这个简单的代码放在一起,解析stackoverflow的首页没有问题...

const cheerio = require('cheerio')
const request = require('request')

try {


  request('https://stackoverflow.com/', function (error, response, html) {
    if (!error && response.statusCode == 200) {
      var $ = cheerio.load(html);

      $('[id|=question-summary]').each(function (i, element) {
        console.log(element.text());
      });
    }
  });

}
catch (e) {


  console.log(e);

}

以上是关于Cheerio attributeStartsWith选择器的主要内容,如果未能解决你的问题,请参考以下文章

Cheerio 获取元素外部 html

用nodejs库cheerio抓取网页图片

node 利用http和cheerio编写简易爬虫

选择带有cheerio属性的元素

Cheerio 没有选择特定的元素

如何使用 node.js 在cheerio 中获取元素名称