Web content to Markdown converter API service
1.1K
这是一个基于Node.js的RESTful API服务,可以将任意网页内容转换为Markdown格式。该服务使用puppeteer-core来渲染网页,确保JavaScript动态内容也能被正确处理。
git clone [repository-url]
cd fetch-web-api
npm install
npm run dev # 开发模式
# 或
npm start # 生产模式
直接从DockerHub拉取预构建的镜像:
docker pull maxazure/fetch-web-api:latest
docker run -d -p 8810:8810 --name fetch-web-api maxazure/fetch-web-api
如果您想自行构建Docker镜像:
docker build -t fetch-web-api .
docker run -d -p 8810:8810 --name fetch-web-api fetch-web-api
本项目使用GitHub Actions进行自动化CI/CD流程:
maxazure/fetch-web-api:latestmaxazure/fetch-web-api:<commit-sha>请求:
POST/api/fetch-markdownapplication/json请求体:
{
"url": "https://example.com"
}
成功响应:
{
"status": "success",
"title": "页面标题",
"markdown": "转换后的markdown内容"
}
错误响应:
{
"status": "error",
"message": "错误描述",
"error": "详细错误信息(仅在开发环境)"
}
请求:
GET/api/health响应:
{
"status": "success",
"message": "Service is running",
"timestamp": "2024-03-15T01:23:45.678Z"
}
服务配置可以通过环境变量进行自定义:
PORT: 服务端口号(默认:8810)CHROME_PATH: Chrome可执行文件路径,默认会根据操作系统自动检测:
/Applications/Google Chrome.app/Contents/MacOS/Google ChromeC:\Program Files\Google\Chrome\Application\chrome.exeC:\Program Files (x86)\Google\Chrome\Application\chrome.exe/usr/bin/google-chromeUSER_DATA_DIR: Chrome用户数据目录(默认:/tmp/chrome-data)NODE_ENV: 运行环境(development/production)本地开发环境:
CHROME_PATH环境变量指定:
# MacOS例子
export CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
# Windows例子 (PowerShell)
$env:CHROME_PATH="C:\Program Files\Google\Chrome\Application\chrome.exe"
# Linux例子
export CHROME_PATH="/usr/bin/google-chrome"
Docker环境:
服务包含完整的错误处理机制:
在生产环境中,建议:
Docker部署注意事项:
在markdown转换服务中增加了以下改进:
在处理HTML内容时,现在会优先提取<body>标签内的内容进行转换。这确保了只处理页面的主要内容。
const bodyMatch = html.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
html = bodyMatch ? bodyMatch[1] : html;
增加了对各种无关标签的清理:
script标签:移除所有JavaScript代码
html = html.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '');
style标签:移除所有CSS样式
html = html.replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi, '');
link标签:移除外部资源链接
html = html.replace(/<link[^>]*>/gi, '');
保持了原有的功能:
MIT
这些更新确保了转换后的Markdown内容更加纯净可读,专注于实际内容而不包含任何样式、脚本等干扰元素。
Content type
Image
Digest
sha256:5a5b39d99…
Size
324.8 MB
Last updated
over 1 year ago
docker pull maxazure/fetch-web-api