🏠 Home 

Greasy Fork is available in English.

Export Patent Info

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();
}
})();