() => { const brief = document.querySelector('.brief'); if (!brief) return { error: 'Paper detail section (.brief) not found' };
// Title const title = brief.querySelector('h1')?.innerText?.trim() ?.replace(/\s*附视频\s*$/, '') // remove "附视频" suffix ?.replace(/\s*网络首发\s*$/, ''); // remove "网络首发" suffix
// Authors - first h3.author contains author links with sup tags const authorH3s = brief.querySelectorAll('h3.author'); const authorSection = authorH3s[0]; const authors = []; if (authorSection) { const authorLinks = authorSection.querySelectorAll('a'); authorLinks.forEach(a => { const name = a.innerText?.replace(/\d+$/, '').trim(); const supMatch = a.innerText?.match(/(\d+)$/); const affiliationNum = supMatch ? supMatch[1] : ''; authors.push({ name, affiliationNum }); }); }
// Affiliations - second h3.author contains org links const affiliations = []; if (authorH3s.length > 1) { const orgLinks = authorH3s[1].querySelectorAll('a'); orgLinks.forEach(a => { affiliations.push(a.innerText?.trim()); }); }
// Abstract const abstractEl = document.querySelector('.abstract-text'); const abstract = abstractEl?.innerText?.trim() || '';
// Keywords const keywordsP = document.querySelector('p.keywords'); const keywords = keywordsP ? Array.from(keywordsP.querySelectorAll('a')).map(a => a.innerText?.replace(/;$/, '').trim()) : [];
// Fund const fundsP = document.querySelector('p.funds'); const fund = fundsP?.innerText?.trim() || '';
// Classification code const clcCode = document.querySelector('.clc-code'); const classification = clcCode?.innerText?.trim() || '';
// Journal/source const docTop = document.querySelector('.doc-top'); const journal = docTop?.querySelector('a')?.innerText?.trim() || '';
// Online first / publication info const headTime = document.querySelector('.head-time'); const pubInfo = headTime?.innerText?.trim() || '';
// Is online first? const isOnlineFirst = !!brief.querySelector('.icon-shoufa');
// Article outline/TOC const catalogList = document.querySelector('.catalog-list, .catalog-listDiv'); const toc = catalogList?.innerText?.trim() || '';
// Citation network counts const citationTabs = document.querySelectorAll('ul.module-tab.tpl_lieteratures li'); const citationInfo = {}; citationTabs.forEach(li => { const id = li.getAttribute('data-id'); const text = li.innerText?.trim(); const countMatch = text.match(/(\d+)/); if (id) { citationInfo[id] = { label: text.replace(/\d+/, '').trim(), count: countMatch ? parseInt(countMatch[1]) : 0 }; } });
return { title, authors, affiliations, abstract, keywords, fund, classification, journal, pubInfo, isOnlineFirst, toc, citationInfo };}