Cheerio attributeStartsWith选择器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cheerio attributeStartsWith选择器相关的知识,希望对你有一定的参考价值。
我正在使用cheerio
来scrape
和website
。我想选择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选择器的主要内容,如果未能解决你的问题,请参考以下文章