TypeScript创建爬虫,爬取网站数据-02

接上篇文章,这篇做拆分优化

上篇文章地址

1. 首先拆分 crowller.ts文件,上代码

// 引入 文件操作模块
import fs from 'fs';
// 引入 路径处理模块
import path from 'path';
/* 通过 superagent 轻量的 Ajax API
   这个工具 获取网址上面,html的内容
   js库ts无法直接读取 cnpm install superagent--save  
   ts使用翻译文件 @types/引入js库  cnpm install @types/superagent -D
 */
import superagent from 'superagent';
// 引入拆分的 ts文件
import DellAnalyzer from './dellAnalyzer';

export interface AnalyZer {
  // 定义 dellAnalyzer.ts, 抛出的方法analyze类型 => 返回值也是string
  analyze: (html: string, filePath: string) => string
}


/**
 * 创建一个 名称为Crowller的类
 * 访问类型
 * public    允许 在类的内外被调用
 * private   允许 在类内部被使用,不允许类外部使用
 * protected 允许 在类内及 继承的子类中被使用,不允许类外使用
 * ts 无法直接引用 js库 ,需要一个.d.ts的翻译文件,才可以引入 js库
 */
class Crowller {
  // path.resolve 方法用于将相对路径转为绝对路径,__dirname:在哪里使用,就是表示当前文件所在的 目录
  private filePath = path.resolve(__dirname, '../data/course.json')
  // 解析html 函数

  // 获取html内容。 定义 爬取 网站 对应的 最原始html内容 
  private async getRawHtml() {
    // superagent.get(url).then 它是一个promise返回值
    const result = await superagent.get(this.url);
    // 返回 result.text 是最原始的html
    return result.text;
  }


  // 写入course.json中
  private writeFile(content: string) {
    fs.writeFileSync(this.filePath, content)
  }

  // 初始化操作。  定义 获取 解析 html 函数
  private async InitSpiderProcess() {
    // 调用函数 爬取 网站 对应的 最原始html内容 
    const html = await this.getRawHtml();
    /*  生成json文件,传入html模版,文件路径  */
    const fileContent = this.analyzer.analyze(html, this.filePath)
    // 写入course.json中,将对象、数组转换成字符串
    // this.writeFile(JSON.stringify(fileContent))
    this.writeFile(fileContent)
  }

  // constructor 在这个类被new的时候,瞬间执行,生成一个实例挂载到类上
  constructor(private url: string, private analyzer: AnalyZer) {
    // 调用 获取 解析 html 函数
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜香小白鱼

如今生活困难,望支持一下,感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值