本文主要介绍AIGC算法,readLink实现url识别pdf、html标题和内容
一、设计思路
- 识别url是pdf或者网页
- 网页处理逻辑,使用
cheerio
解析网页 - PDF处理逻辑,使用
pdf-parse
解析PDF文件 - 自定义的函数来提取标题和内容
二、可执行核心代码
const express = require("express");
const axios = require("axios");
const ytSearch = require("yt-search");
const cheerio = require("cheerio");
const { PDFDocument } = require("pdf-lib");
const pdfParser = require("pdf-parse");
const app = express();
const port = 3000;
app.get("/read-link", async (req, res) => {
const url = req.query.url;
if (!url) {
return res.status(400).send("URL is required");
}
try {
const response = await axios.get(url, { responseType: "arraybuffer" });
const contentType = response.headers["content-type"];
let data, title;
if (contentType.includes("text/html")) {
const $ = cheerio.load(response.data.toString());
title = $("title").text();
data = $("html").html(); // 这里可以根据需要提取更具体的部分 - 通用型 需要定制化
} else if (contentType.includes("application/pdf")) {
// PDF处理逻辑,使用pdf-parse解析PDF文件
const pdf = await pdfParser(response.data);
const content = pdf.text;
const title = extractTitleFromContent(content); // 需要自定义的函数来提取标题
const data = extractContentFromContent(content); // 需要自定义的函数来提取内容
res.send({ title, data });
} else {
res.status(415).send("Unsupported media type");
return;
}
res.send({ title, data });
} catch (error) {
res.status(500).send(error.message);
}
});
// 示例:从PDF内容中提取标题
// 这可能需要根据PDF的实际内容进行调整
let extractTitleFromContent = (content, index = 0) => {
// 假设标题是第一行
const lines = content.trim().split("\n");
return lines[0].trim();
};
// 示例:从PDF内容中提取内容
// 这同样可能需要根据PDF的实际内容进行调整
function extractContentFromContent(content) {
// 假设内容是除了标题之外的所有行
const lines = content.split("\n");
// 移除标题行
lines.shift();
return lines.join("\n").trim();
}
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});