Cheerio 属性 StartsWith 选择器
Cheerio attributeStartsWith selector
我正在使用 cheerio
到 scrape
一个 website
。我想 select id 以特定值开头的所有元素。但是当我像 jQuery
那样使用 attributeStartsWith
时,我得到了 malformed attribute selector
语法错误。
您可以在 jQuery
到 select 所有 div
以 'question-summary-'
开头的元素中执行此操作
$('div[id^="question-summary-"')
我的 node
代码如下所示
const cheerio = require('cheerio')
const $ = cheerio.load('https://whosebug.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://whosebug.com/')
console.log('text', $("div[id^='question-summary-']").text());
干杯
您尝试过使用
$("[id|='question-summary']")
改为 ?
因为 |= 正在查找 '' 后跟连字符的内容。
我现在发现我有一个错字,奇怪的是 jQuery 完全排除了它。修正了拼写错误,现在它可以工作了。 Cheerio说的对,jQuery应该更不可原谅
旧选择器
$('div[id^="question-summary-"')
新选择器
$('div[id^="question-summary-"]')
注意末尾的括号。
奇怪的是,jQuery 完全排除了第一个选择器。要测试旧的选择器,请转到 whosebug.com,输入 F12 并将其粘贴到控制台中。您会看到两个选择器都在工作。
我一直很好奇你的问题...
把这段简单的代码放在一起,解析Whosebug的首页没有问题...
const cheerio = require('cheerio')
const request = require('request')
try {
request('https://whosebug.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
到 scrape
一个 website
。我想 select id 以特定值开头的所有元素。但是当我像 jQuery
那样使用 attributeStartsWith
时,我得到了 malformed attribute selector
语法错误。
您可以在 jQuery
到 select 所有 div
以 'question-summary-'
$('div[id^="question-summary-"')
我的 node
代码如下所示
const cheerio = require('cheerio')
const $ = cheerio.load('https://whosebug.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://whosebug.com/')
console.log('text', $("div[id^='question-summary-']").text());
干杯
您尝试过使用
$("[id|='question-summary']")
改为 ?
因为 |= 正在查找 '' 后跟连字符的内容。
我现在发现我有一个错字,奇怪的是 jQuery 完全排除了它。修正了拼写错误,现在它可以工作了。 Cheerio说的对,jQuery应该更不可原谅
旧选择器
$('div[id^="question-summary-"')
新选择器
$('div[id^="question-summary-"]')
注意末尾的括号。
奇怪的是,jQuery 完全排除了第一个选择器。要测试旧的选择器,请转到 whosebug.com,输入 F12 并将其粘贴到控制台中。您会看到两个选择器都在工作。
我一直很好奇你的问题...
把这段简单的代码放在一起,解析Whosebug的首页没有问题...
const cheerio = require('cheerio')
const request = require('request')
try {
request('https://whosebug.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);
}