返回
用 TypeScript 写个简单的爬虫,新手入门指南
前端
2023-10-14 00:07:00
前言
网络爬虫是一种软件工具,用于从网站上收集数据。它们通常用于收集诸如新闻文章、产品信息或社交媒体帖子等信息。网络爬虫的工作原理是下载网页内容,解析 HTML 代码,然后提取所需的信息。
TypeScript 简介
TypeScript 是一种 JavaScript 的超集,它添加了类型系统和一些其他特性。TypeScript 可以编译成 JavaScript 代码,因此它可以运行在任何支持 JavaScript 的环境中。
准备工作
在开始之前,您需要确保已经安装了以下软件:
- TypeScript 编译器
- Node.js
- 一个文本编辑器
编写 TypeScript 爬虫
首先,创建一个新的 TypeScript 项目。您可以使用以下命令:
mkdir typescript-crawler
cd typescript-crawler
npm init -y
接下来,在项目目录中创建一个名为 index.ts
的文件。这个文件将包含您的爬虫代码。
在 index.ts
文件中,首先导入必要的库:
import * as puppeteer from 'puppeteer';
import * as fs from 'fs';
puppeteer
库用于控制浏览器,fs
库用于文件读写。
接下来,定义一个名为 scrapeQuotes
的异步函数。这个函数将负责从 Quotes to Scrape 网站上抓取名言数据:
async function scrapeQuotes() {
// 创建一个新的浏览器实例
const browser = await puppeteer.launch();
// 打开 Quotes to Scrape 网站
const page = await browser.newPage();
await page.goto('https://quotes.toscrape.com/');
// 等待页面加载完成
await page.waitForSelector('.quote');
// 获取所有名言元素
const quotes = await page.$('.quote');
// 从每个名言元素中提取数据
const data = [];
for (const quote of quotes) {
const text = await quote.$eval('div.quote', el => el.textContent);
const author = await quote.$eval('small.author', el => el.textContent);
const tags = await quote.$eval('a.tag', els => els.map(el => el.textContent));
data.push({
text,
author,
tags,
});
}
// 将数据保存到文件中
fs.writeFileSync('quotes.json', JSON.stringify(data));
// 关闭浏览器
await browser.close();
}
最后,调用 scrapeQuotes
函数来启动爬虫:
scrapeQuotes();
运行爬虫
要运行爬虫,请在终端中输入以下命令:
tsc index.ts
node index.js
爬虫运行完成后,您可以在项目目录中找到一个名为 quotes.json
的文件。这个文件包含了从 Quotes to Scrape 网站上抓取到的名言数据。
结语
本教程向您展示了如何使用 TypeScript 编写一个简单的爬虫。您还可以使用 TypeScript 编写更复杂的爬虫,来抓取各种各样的数据。