cheerio 不执行
时间: 2023-09-25 21:12:31 浏览: 45
可能是由于以下几个原因导致 cheerio 不执行:
1. 没有正确导入 cheerio 模块。请确保在代码中正确导入了 cheerio 模块,例如:`const cheerio = require('cheerio');`
2. cheerio 模块的版本不兼容。请尝试更新 cheerio 模块到最新版本,或者使用与你的 Node.js 版本兼容的 cheerio 版本。
3. cheerio 模块的使用方式不正确。请确保你了解 cheerio 模块的使用方式,并参考官方文档进行使用。
如果以上原因都不是导致 cheerio 不执行的原因,你可以提供更多的代码细节或者错误提示信息,这样我才能更好地帮助你解决问题。
相关问题
在NODEJS中不执行
我看到你的代码中存在一个语法错误,可能是因为在代码中使用了不允许的字符。请尝试以下代码:
```javascript
const html = `<html><tbody> <!-- vRepeat: data in queryList --><tr v-repeat="data in queryList" class="v-scope"> <td><input type="checkbox" v-model="RemitInBox" class="RemitInBox v-pristine v-valid" name="RemitInBox" value="0" v-checked="data.CheckFlag" v-disabled="data.FndDrc!='01' || data.BusiState!='10'" id="List0_RemitIn" v-click="clickBox($index,data)"></td> <td><span v-show="data.FndDrc!='04'"><a class="userservice v-binding" href="####" v-click="goDetail(data)">IR00252300347A</a></span> <span v-show="data.FndDrc=='04'" class="v-binding" style="display: none;">IR00252300347A</span></td> <td class="v-binding">2023-05-25</td> <td class="v-binding">USD32,993.50</td> <td class="v-binding">1/FLOKSER KIMYA SANAYI VE TICARET 1...</td> <td class="v-binding">31980005000107125</td> <td><span v-show="data.FndDrc=='01'">入账</span> <span v-show="data.FndDrc=='04'" style="display: none;">退汇</span> <span v-show="!(data.FndDrc=='04'||data.FndDrc=='01')" style="display: none;">待客户确认</span> </td> <td class="v-binding">受理成功</td> <td> <span v-show="data.FndDrc=='01' && data.BusiState=='10'"> <a href="#" v-click="remitInPrint(data.BsnSrlNo)" class="userservice"> 打印 </a> </span> </td> </tr> </tbody></html>`;
const cheerio = require('cheerio');
const $ = cheerio.load(html);
const result = [];
$('tr').each((i, tr) => {
const tds = $(tr).find('td');
const data = {
RemitInBox: $(tds[0]).find('input').attr('v-checked') === 'true',
IRNumber: $(tds[1]).find('a').text(),
Date: $(tds[2]).text(),
Amount: $(tds[3]).text(),
Account: $(tds[4]).text(),
AccountNumber: $(tds[5]).text(),
Status: $(tds[6]).text(),
Result: $(tds[7]).text(),
Print: $(tds[8]).find('a').length > 0,
};
result.push(data);
});
console.log(result);
```
这段代码应该可以正常执行并输出结果。
cheerio 执行以下代码 <html><tbody> <!-- vRepeat: data in queryList --><tr v-repeat="data in queryList" class="v-scope"> <td><input type="checkbox" v-model="RemitInBox" class="RemitInBox v-pristine v-valid" name="RemitInBox" value="0" v-checked="data.CheckFlag" v-disabled="data.FndDrc!='01' || data.BusiState!='10'" id="List0_RemitIn" v-click="clickBox($index,data)"></td> <td><span v-show="data.FndDrc!='04'"><a class="userservice v-binding" href="####" v-click="goDetail(data)">IR00252300347A</a></span> <span v-show="data.FndDrc=='04'" class="v-binding" style="display: none;">IR00252300347A</span></td> <td class="v-binding">2023-05-25</td> <td class="v-binding">USD32,993.50</td> <td class="v-binding">1/FLOKSER KIMYA SANAYI VE TICARET 1...</td> <td class="v-binding">31980005000107125</td> <td><span v-show="data.FndDrc=='01'">入账</span> <span v-show="data.FndDrc=='04'" style="display: none;">退汇</span> <span v-show="!(data.FndDrc=='04'||data.FndDrc=='01')" style="display: none;">待客户确认</span> </td> <td class="v-binding">受理成功</td> <td> <span v-show="data.FndDrc=='01' && data.BusiState=='10'"> <a href="#" v-click="remitInPrint(data.BsnSrlNo)" class="userservice"> 打印 </a> </span> </td> </tr> </tbody> </html>
这段代码是一个包含了 v-repeat 指令的 HTML 模板。可以使用 cheerio 库将其解析成 DOM 树,并对其进行操作。
下面是一个示例代码,使用 cheerio 库解析上述 HTML 模板,并获取其中 v-repeat 指令的内容:
```javascript
const cheerio = require('cheerio');
const html = '<html><tbody> <!-- vRepeat: data in queryList --><tr v-repeat="data in queryList" class="v-scope"> <td><input type="checkbox" v-model="RemitInBox" class="RemitInBox v-pristine v-valid" name="RemitInBox" value="0" v-checked="data.CheckFlag" v-disabled="data.FndDrc!=\'01\' || data.BusiState!=\'10\'" id="List0_RemitIn" v-click="clickBox($index,data)"></td> <td><span v-show="data.FndDrc!=\'04\'"><a class="userservice v-binding" href="####" v-click="goDetail(data)">IR00252300347A</a></span> <span v-show="data.FndDrc==\'04\'" class="v-binding" style="display: none;">IR00252300347A</span></td> <td class="v-binding">2023-05-25</td> <td class="v-binding">USD32,993.50</td> <td class="v-binding">1/FLOKSER KIMYA SANAYI VE TICARET 1...</td> <td class="v-binding">31980005000107125</td> <td><span v-show="data.FndDrc==\'01\'">入账</span> <span v-show="data.FndDrc==\'04\'" style="display: none;">退汇</span> <span v-show="!(data.FndDrc==\'04\'||data.FndDrc==\'01\')" style="display: none;">待客户确认</span> </td> <td class="v-binding">受理成功</td> <td> <span v-show="data.FndDrc==\'01\' && data.BusiState==\'10\'"> <a href="#" v-click="remitInPrint(data.BsnSrlNo)" class="userservice"> 打印 </a> </span> </td> </tr> </tbody> </html>';
const $ = cheerio.load(html);
const vRepeatContent = $('tr[v-repeat]').attr('v-repeat');
console.log(vRepeatContent); // 输出:data in queryList
```
在这个示例中,我们先使用 cheerio.load() 方法将 HTML 模板解析成 DOM 树,并使用 $() 方法获取包含了 v-repeat 指令的 tr 元素。然后,使用 attr() 方法获取该元素的 v-repeat 属性值,即 data in queryList。