Closed6
Nest.jsでwebサイト情報を抜き出すには??
いい感じのmoduleがあるぞ!
open-graph-scraper.module.ts
import { Module } from '@nestjs/common';
import { OpenGraphScraperService } from './open-graph-scraper.service';
@Module({
providers: [OpenGraphScraperService],
exports: [OpenGraphScraperService],
})
export class OpenGraphScraperModule { }
moduleでserviceモジュールをimportしてあげて、依存関係を解決させる
open-graph-scraper.service.ts
/* eslint-disable @typescript-eslint/no-var-requires */
import { Injectable } from '@nestjs/common';
const ogs = require('open-graph-scraper');
@Injectable()
export class OpenGraphScraperService {
async getOpenGraphData(url: string) {
const options = { url: url };
try {
const data = await ogs(options);
const { result } = data;
// ここで必要なデータを処理
return result;
} catch (err) {
throw new Error('Open Graph data fetch failed: ' + err.message);
}
}
}
これだけで完成!簡単だ
呼び出し元
article.service.ts
const res = await this.openGraphScraperService.getOpenGraphData(
data.articleLink,
);
console.log(res);
// 下記はresの中身
{
ogTitle: 'Open Graph protocol',
ogType: 'website',
ogUrl: 'https://ogp.me/',
ogDescription: 'The Open Graph protocol enables any web page to become a rich object in a social graph.',
ogImage: [
{
height: '300',
type: 'image/png',
url: 'https://ogp.me/logo.png',
width: '300'
}
],
charset: 'utf-8',
requestUrl: 'http://ogp.me/',
success: true
}
ogImageはあったり、なかったりするので、エラーハンドリングをやらないといけない!
このスクラップは2023/11/25にクローズされました