Greasy Fork is available in English.
Export patent information to CSV format
// ==UserScript== // @name Export Patent Info // @namespace http://your.site.com // @version 0.3 // @description Export patent information to CSV format // @author Your Name // @match *://*.cponline.cnipa.gov.cn/* // @license MIT // @grant none // ==/UserScript== (function() { 'use strict'; // 创建导出按钮 const exportButton = document.createElement('button'); exportButton.textContent = '导出专利信息'; exportButton.style.position = 'fixed'; exportButton.style.top = '120px'; exportButton.style.right = '20px'; exportButton.style.zIndex = '9999'; exportButton.style.padding = '10px 20px'; exportButton.style.fontSize = '16px'; exportButton.style.backgroundColor = '#4CAF50'; exportButton.style.color = 'white'; exportButton.style.border = '1px solid #ddd'; exportButton.style.borderRadius = '5px'; exportButton.style.boxShadow = '2px 2px 5px rgba(0,0,0,0.2)'; exportButton.style.cursor = 'pointer'; exportButton.addEventListener('click', function() { // 创建一个数组来保存提取的信息 let patentsData = []; // 遍历每个专利信息元素 document.querySelectorAll('.table_info').forEach(function(patent) { // 提取元素内部的各项信息 const spans = patent.querySelectorAll('span'); let Application_OR_Patent_Number = 'CN' + patent.querySelector('.hover_active').textContent.trim(); Application_OR_Patent_Number = Application_OR_Patent_Number.slice(0, -1) + '.' + Application_OR_Patent_Number.slice(-1); const title = `"${patent.querySelector('span span').textContent.trim()}"`; let Applicant = `"${spans[6].textContent.trim().replace("申请人:", "")}"`; let PatentType = `"${spans[8].textContent.trim().replace("专利类型:", "")}"`; let ApplicationDate = `"${spans[10].textContent.trim().replace("申请日:", "")}"`; let AuthorizationAnnouncementNumber = `"${spans[14].textContent.trim().replace("授权公告号:", "")}"`; let legalStatus = `"${spans[16].textContent.trim().replace("法律状态:", "")}"`; let CaseStatus = `"${spans[18].textContent.trim().replace("案件状态:", "")}"`; let AuthorizationAnnouncementDate = `"${spans[20].textContent.trim().replace("授权公告日:", "")}"`; // 将提取的信息添加到数组中 patentsData.push({ '申请号': Application_OR_Patent_Number, '发明名称': title, '申请(专利权)人': Applicant, '文#类型': PatentType, '申请日': ApplicationDate, '授权公告号': AuthorizationAnnouncementNumber, '法律状态': legalStatus, '案件状态': CaseStatus, '授权公告日': AuthorizationAnnouncementDate }); }); // 导出数据到 Excel 表格 if (patentsData.length > 0) { exportToExcel(patentsData); } else { console.error('没有可导出的专利信息!'); } }); document.body.appendChild(exportButton); // 导出数据到 Excel 表格 function exportToExcel(data) { const header = Object.keys(data[0]); const rows = data.map(obj => header.map(key => obj[key])); const csvContent = header.join(',') + '\n' + rows.map(row => row.join(',')).join('\n'); const blob = new Blob([new Uint8Array([0xEF, 0xBB, 0xBF]), csvContent], { type: 'text/csv;charset=utf-8' }); const url = URL.createObjectURL(blob); // 使用浏览器的下载功能下载 CSV 文件 const a = document.createElement('a'); a.href = url; a.download = 'patent_info.csv'; a.click(); } })();