// 使用无头浏览器抓取指定页面的可见文本并保存到 refs/。 import { mkdir, writeFile } from 'node:fs/promises' import { resolve } from 'node:path' import { launchBrowser, newContext } from './browser.js' import { ROOT } from './config.js' /** 待抓取的参考资料:文件名与 URL */ const URLS: Array<[string, string]> = [ ['deepseek_share', 'https://chat.deepseek.com/share/mwnjui93cvhspkrs1z'], ] const OUT_DIR = resolve(ROOT, 'refs') async function main(): Promise { await mkdir(OUT_DIR, { recursive: true }) const browser = await launchBrowser() const context = await newContext(browser, { width: 1440, height: 1200 }) const page = await context.newPage() try { for (const [name, url] of URLS) { try { await page.goto(url) await page.waitForTimeout(10000) for (let i = 0; i < 6; i++) { await page.evaluate(() => window.scrollBy(0, document.body.scrollHeight / 6)) await page.waitForTimeout(1500) } await page.evaluate(() => window.scrollTo(0, 0)) await page.waitForTimeout(1000) const text = await page.evaluate(() => document.body.innerText) await writeFile(resolve(OUT_DIR, `${name}.txt`), text, 'utf8') console.log(`[OK] ${name} -> ${text.length} chars`) } catch (err) { console.log(`[FAIL] ${name}: ${err}`) } } } finally { await context.close() await browser.close() } } main().catch((err) => { console.error('FAIL', err) process.exit(1) })