JSON.parse报错

来源:3-5 使用组合设计模式优化代码

zora_Zhang

2020-02-17

图片描述
import fs from “fs”;
import cheerio from “cheerio”;
import { Analyzer } from “./crowller”;

interface Course {
title: string;
count: number;
}
interface courseResult {
time: number;
data: Course[];
}
interface Content {
[propName: number]: Course[];
}

export default class DellAnalyzer implements Analyzer {
private getCourseInfo(html: string) {
const $ = cheerio.load(html);
const courseItem = $(".course-item");
const couseInfos: Course[] = [];

courseItem.map((index, ele) => {
  const desc = $(ele).find(".course-desc");
  const title = desc.eq(0).text();
  const count = parseInt(
    desc
      .eq(1)
      .text()
      .split(":")[1]
  );
  couseInfos.push({ title: title, count: count });
});

return {
  time: new Date().getTime(),
  data: couseInfos
};

}

generateJsonContent(courseInfo: courseResult, filePath: string) {
let fileContent: Content = {};
if (fs.existsSync(filePath)) {
fileContent = JSON.parse(fs.readFileSync(filePath, “utf-8”));
}
fileContent[courseInfo.time] = courseInfo.data;
return fileContent;
}

public analyze(html: string, filePath: string) {
const courseInfo = this.getCourseInfo(html);
const fileContent = this.generateJsonContent(courseInfo, filePath);
return JSON.stringify(fileContent);
}
}

写回答

3回答

百分之一昵称已占用

2020-02-18

有可能是url错了,没有爬到html,你看看secretkey和GitHub里面的一样吗?

2
2
王大锤4993152
回复
百分之一昵称已占用
你是对的,刚才试了一下,把data中的文件删了就好了
2020-07-22
共2条回复

weixin_慕田峪131215

2020-10-07

。。。

0
0

Dell

2020-02-22

你看下你的json文件,存的内容是什么,是不是不是标准json格式

0
0

专为小白设计的TypeScript入门课

Dell老师专为TypeScript小白打造的,全栈式教学TS入门课程

2249 学习 · 506 问题

查看课程