📅  最后修改于: 2023-12-03 15:31:02.959000             🧑  作者: Mango
本篇文章主要讲解如何使用 TypeScript 来爬取商品价格数据并存储在 Google Sheets 中。
在开始之前,你需要拥有以下几个工具:
在 VS Code 中新建一个 TypeScript 项目,并安装依赖包:
npm init -y
npm install typescript googleapis cheerio @types/node
首先,我们需要启用 Google Sheets API 并获取相应的凭据。可以按照此文档中的步骤进行操作:https://developers.google.com/sheets/api/quickstart/nodejs。
在获取到凭据之后,我们需要使用 OAuth2Client 对象进行身份验证:
import { google } from 'googleapis';
import { OAuth2Client } from 'google-auth-library';
const credentials = require('./credentials.json');
const { client_secret, client_id, redirect_uris } = credentials.installed;
const oauth2Client = new google.auth.OAuth2(
client_id,
client_secret,
redirect_uris[0]
);
oauth2Client.setCredentials({
access_token: 'ACCESS_TOKEN',
refresh_token: 'REFRESH_TOKEN',
scope: 'https://www.googleapis.com/auth/spreadsheets'
});
由于 access_token 会在一段时间后过期,我们需要使用 refresh_token 来获取新的 access_token。
我们使用 Cheerio 这个库来进行页面解析。
import axios from 'axios';
import cheerio from 'cheerio';
const url = 'https://www.amazon.cn/dp/B0878Y2DP2';
const res = await axios.get(url);
const $ = cheerio.load(res.data);
const title = $('#productTitle').text().trim();
const price = $('#priceblock_ourprice').text().trim();
console.log(title, price);
在这里,我们使用 axios 来发起请求,并使用 cheerio 解析页面内容。
我们使用 Google Sheets API 将数据存储在 Google Sheets 中。
const sheets = google.sheets({ version: 'v4', auth: oauth2Client });
await sheets.spreadsheets.values.append({
spreadsheetId: 'SPREADSHEET_ID',
range: 'Sheet1!A1:B1',
valueInputOption: 'USER_ENTERED',
requestBody: {
values: [[title, price]]
}
});
在这里,我们使用 sheets.spreadsheets.values.append 方法将标题和价格存储在第一个 sheet 的 A1 和 B1 单元格中。如果 B1 单元格不是空单元格,数据将会追加在它的下方。
以上就是如何使用 TypeScript 爬取数据并存储在 Google Sheets 中的全部内容。