You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

需求:通过Node.js实现DOAJ平台XML文件上传自动化

实现DOAJ XML文件自动上传的Node.js方案

背景说明

DOAJ目前没有提供专门用于XML文件自动上传的公开API,仅支持网页端手动上传操作。要实现流程自动化,只能通过模拟浏览器手动操作的方式完成。

技术选型

使用puppeteer(无头Chrome/Chromium操作库)来模拟完整的上传流程,包括登录、导航上传页面、文件选择、提交等步骤。

实现步骤

1. 安装依赖

npm install puppeteer

2. 核心代码示例

const puppeteer = require('puppeteer');
const path = require('path');

(async () => {
  // 启动浏览器,设置headless: false可查看可视化操作过程
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();

  try {
    // 导航到DOAJ登录页
    await page.goto('https://doaj.org/account/login');

    // 填写账号密码(替换为你的DOAJ账号信息)
    await page.type('#email', 'your-doaj-email@example.com');
    await page.type('#password', 'your-doaj-password');
    await page.click('button[type="submit"]');
    await page.waitForNavigation({ waitUntil: 'networkidle2' });

    // 导航到XML上传页面(路径根据实际页面调整)
    await page.goto('https://doaj.org/journal/update');
    await page.waitForSelector('input[type="file"]');

    // 上传本地XML文件(替换为你的文件路径)
    const filePath = path.resolve(__dirname, 'target-journal.xml');
    const fileInput = await page.$('input[type="file"]');
    await fileInput.uploadFile(filePath);

    // 提交上传(按钮选择器根据实际页面调整)
    await page.click('button#submit-xml');
    await page.waitForNavigation({ waitUntil: 'networkidle2' });

    console.log('XML文件上传完成');
  } catch (error) {
    console.error('上传失败:', error);
  } finally {
    await browser.close();
  }
})();

关键注意事项

  • 替换代码中的账号密码、文件路径、页面元素选择器为实际值(可通过浏览器开发者工具查看元素选择器)。
  • DOAJ页面结构可能会更新,若代码失效,需重新核对页面元素的选择器。
  • 避免频繁执行自动化操作,防止触发平台反爬机制导致账号受限。
  • 批量上传时,可循环处理文件列表,注意添加适当延迟(如await page.waitForTimeout(1000))避免操作过快。

内容的提问来源于stack exchange,提问作者Mahe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:22:10