如何解决如何使用正则表达式从JS内容获取对象
我正在使用Node.js和cheerio,我希望JS脚本中的options对象和文本'cases-linear' https://i.imgur.com/oNyJ4Mj.png
<script type="text/javascript">
Highcharts.chart("cases-linear",{
chart: {
type: "line",},title: {
text: "Total Cases",subtitle: {
text: "(Linear Scale)",xAxis: {
categories: ["Mar 12","Mar 13","Mar 14","Mar 15","Mar 16","Mar 17","Mar 18","Mar 19","Mar 20","Mar 21","Mar 22","Mar 23","Mar 24","Mar 25"],yAxis: {
title: {
text: "Total Cases",});
</script>
解决方法
您可以获取<script>
的文本内容,然后在{
结束之前将)
匹配到</script>
:
const cheerio = require('cheerio');
const $ = cheerio.load(`<script type="text/javascript">
Highcharts.chart("cases-linear",{
chart: {
type: "line",},title: {
text: "Total Cases",subtitle: {
text: "(Linear Scale)",xAxis: {
categories: ["Mar 12","Mar 13","Mar 14","Mar 15","Mar 16","Mar 17","Mar 18","Mar 19","Mar 20","Mar 21","Mar 22","Mar 23","Mar 24","Mar 25"],yAxis: {
title: {
text: "Total Cases",});
</script>`);
const scriptContent = $('script')[0].children[0].data;
const [,param1,objText] = scriptContent.match(/"*([^"]+)",({.*)(?=\);)/s);
console.log(param1);
console.log(objText);
eval('var obj = ' + objText)
console.log(obj);
如果输入是可信的,则 eval
是一个简单的选项。否则,您可以使用JavaScript解析器提取数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。