init
This commit is contained in:
642
script1.txt
Normal file
642
script1.txt
Normal file
@@ -0,0 +1,642 @@
|
||||
|
||||
// ==UserScript==
|
||||
// @name View HTML Source & Company Info
|
||||
// @namespace http://tampermonkey.net/
|
||||
// @version 1.0
|
||||
// @description 在所有网页添加按钮,显示当前HTML源码并可复制
|
||||
// @author Your Name *://*/*,
|
||||
// @match https://aiqicha.baidu.com/*
|
||||
// @grant none
|
||||
// ==/UserScript==
|
||||
(function() {
|
||||
'use strict';
|
||||
// 创建主容器(修改版)
|
||||
function createButtonContainer() {
|
||||
const container = document.createElement('div');
|
||||
container.id = 'tm-button-container';
|
||||
container.style.position = 'fixed';
|
||||
container.style.right = '20px';
|
||||
container.style.bottom = '20px';
|
||||
container.style.zIndex = '9999';
|
||||
container.style.display = 'flex';
|
||||
container.style.flexDirection = 'column';
|
||||
container.style.gap = '10px';
|
||||
container.style.transition = 'all 0.3s ease';
|
||||
container.style.width = '40px';
|
||||
container.style.height = '40px';
|
||||
container.style.overflow = 'hidden';
|
||||
container.style.borderRadius = '50%';
|
||||
container.style.backgroundColor = 'rgba(0,0,0,0.7)';
|
||||
container.style.padding = '0';
|
||||
container.style.cursor = 'move';
|
||||
container.style.alignItems = 'center';
|
||||
container.style.justifyContent = 'center';
|
||||
|
||||
// 创建+号指示器
|
||||
const plusIndicator = document.createElement('div');
|
||||
plusIndicator.textContent = '+';
|
||||
plusIndicator.style.color = 'white';
|
||||
plusIndicator.style.fontSize = '24px';
|
||||
plusIndicator.style.textAlign = 'center';
|
||||
plusIndicator.style.cursor = 'pointer';
|
||||
plusIndicator.style.width = '100%';
|
||||
plusIndicator.style.height = '100%';
|
||||
plusIndicator.style.display = 'flex';
|
||||
plusIndicator.style.alignItems = 'center';
|
||||
plusIndicator.style.justifyContent = 'center';
|
||||
|
||||
// 存储按钮引用
|
||||
let buttons = [];
|
||||
|
||||
// 鼠标悬停加号时显示按钮
|
||||
plusIndicator.addEventListener('mouseenter', function() {
|
||||
container.style.width = 'auto';
|
||||
container.style.height = 'auto';
|
||||
container.style.padding = '10px';
|
||||
container.style.borderRadius = '5px';
|
||||
buttons.forEach(btn => btn.style.display = 'block');
|
||||
});
|
||||
|
||||
// 鼠标移出容器时隐藏按钮
|
||||
container.addEventListener('mouseleave', function() {
|
||||
container.style.width = '40px';
|
||||
container.style.height = '40px';
|
||||
container.style.padding = '0';
|
||||
container.style.borderRadius = '50%';
|
||||
buttons.forEach(btn => btn.style.display = 'none');
|
||||
});
|
||||
|
||||
// 点击+号也可以切换按钮显示
|
||||
plusIndicator.addEventListener('click', function() {
|
||||
const isExpanded = container.style.width !== '40px';
|
||||
if (isExpanded) {
|
||||
container.style.width = '40px';
|
||||
container.style.height = '40px';
|
||||
container.style.padding = '0';
|
||||
container.style.borderRadius = '50%';
|
||||
buttons.forEach(btn => btn.style.display = 'none');
|
||||
} else {
|
||||
container.style.width = 'auto';
|
||||
container.style.height = 'auto';
|
||||
container.style.padding = '10px';
|
||||
container.style.borderRadius = '5px';
|
||||
buttons.forEach(btn => btn.style.display = 'block');
|
||||
}
|
||||
});
|
||||
|
||||
// 添加拖动功能...
|
||||
|
||||
container.appendChild(plusIndicator);
|
||||
document.body.appendChild(container);
|
||||
|
||||
// 返回容器和按钮引用存储
|
||||
return {
|
||||
container,
|
||||
addButton: function(button) {
|
||||
button.style.display = 'none'; // 初始隐藏按钮
|
||||
buttons.push(button);
|
||||
container.appendChild(button);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// 创建按钮(修改版)
|
||||
function createButton(text, onClick) {
|
||||
const button = document.createElement('button');
|
||||
button.textContent = text;
|
||||
button.style.backgroundColor = 'transparent';
|
||||
button.style.color = 'white';
|
||||
button.style.padding = '8px 12px';
|
||||
button.style.border = '1px solid white';
|
||||
button.style.borderRadius = '4px';
|
||||
button.style.cursor = 'pointer';
|
||||
button.style.marginBottom = '5px';
|
||||
button.style.width = '100%';
|
||||
button.style.transition = 'all 0.2s ease';
|
||||
button.style.minWidth = '120px';
|
||||
|
||||
button.addEventListener('mouseenter', function() {
|
||||
this.style.backgroundColor = 'rgba(255,255,255,0.2)';
|
||||
});
|
||||
|
||||
button.addEventListener('mouseleave', function() {
|
||||
this.style.backgroundColor = 'transparent';
|
||||
});
|
||||
|
||||
button.addEventListener('click', onClick);
|
||||
|
||||
return button;
|
||||
}
|
||||
|
||||
// 创建显示源码的按钮
|
||||
function createSourceButton(container) {
|
||||
const buttton = createButton('显示HTML源码',function(){
|
||||
const html = document.documentElement.outerHTML;
|
||||
copyToClipboard(html, 'HTML源码已复制到剪贴板');
|
||||
})
|
||||
//container.appendChild(buttton)
|
||||
return;
|
||||
const button = document.createElement('button');
|
||||
button.textContent = '显示HTML源码';
|
||||
button.style.backgroundColor = '#4CAF50';
|
||||
button.style.color = 'white';
|
||||
button.style.padding = '10px 15px';
|
||||
button.style.border = 'none';
|
||||
button.style.borderRadius = '5px';
|
||||
button.style.cursor = 'pointer';
|
||||
button.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)';
|
||||
|
||||
button.addEventListener('click', function() {
|
||||
const html = document.documentElement.outerHTML;
|
||||
copyToClipboard(html, 'HTML源码已复制到剪贴板');
|
||||
});
|
||||
|
||||
container.appendChild(button);
|
||||
}
|
||||
|
||||
// 创建解析公司信息的按钮
|
||||
function createParserButton(container) {
|
||||
const button = createButton('解析公司信息',function(){
|
||||
// 获取目标表格
|
||||
const table = document.querySelector('table.zx-detail-basic-table');
|
||||
if (!table) {
|
||||
alert('未找到企业信息表格');
|
||||
return;
|
||||
}
|
||||
|
||||
// 解析表格数据
|
||||
const companyData = {
|
||||
"企业名称": getOptimizedValue(table, "企业名称"),
|
||||
"统一社会信用代码": getUnifiedSocialCreditCode(table, "统一社会信用代码"),
|
||||
"法定代表人": getLegalRepresentative(table, "法定代表人"),
|
||||
"经营状态": getOptimizedValue(table, "经营状态"),
|
||||
"成立日期": getOptimizedValue(table, "成立日期"),
|
||||
"行政区划": getOptimizedValue(table, "行政区划"),
|
||||
"注册资本": getOptimizedValue(table, "注册资本"),
|
||||
"实缴资本": getOptimizedValue(table, "实缴资本"),
|
||||
"企业类型": getOptimizedValue(table, "企业类型"),
|
||||
"所属行业": getOptimizedValue(table, "所属行业"),
|
||||
"工商注册号": getBusinessRegistrationNo(table, "工商注册号"),
|
||||
"组织机构代码": getOrganizationCode(table),
|
||||
"纳税人识别号": getTaxpayerId(table, "纳税人识别号"),
|
||||
"纳税人资质": getOptimizedValue(table, "纳税人资质"),
|
||||
"营业期限": getOptimizedValue(table, "营业期限"),
|
||||
"核准日期": getApprovalDate(table, "核准日期"),
|
||||
"参保人数": getInsuranceNumber(table, "参保人数"),
|
||||
"登记机关": getOptimizedValue(table, "登记机关"),
|
||||
"曾用名": getOptimizedValue(table, "曾用名"),
|
||||
"注册地址": getOptimizedValue(table, "注册地址"),
|
||||
"经营范围": getOptimizedValue(table, "经营范围")
|
||||
};
|
||||
|
||||
// 显示解析结果
|
||||
showResult(companyData);
|
||||
})
|
||||
container.appendChild(button)
|
||||
|
||||
return;
|
||||
//const button = document.createElement('button');
|
||||
button.textContent = '解析公司信息';
|
||||
button.style.backgroundColor = '#2196F3';
|
||||
button.style.color = 'white';
|
||||
button.style.padding = '10px 15px';
|
||||
button.style.border = 'none';
|
||||
button.style.borderRadius = '5px';
|
||||
button.style.cursor = 'pointer';
|
||||
button.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)';
|
||||
|
||||
button.addEventListener('click', function() {
|
||||
try {
|
||||
const companyInfo = parseCompanyInfo(document.documentElement.outerHTML);
|
||||
const jsonStr = JSON.stringify(companyInfo, null, 2);
|
||||
copyToClipboard(jsonStr, '公司信息已复制到剪贴板');
|
||||
} catch (e) {
|
||||
alert('解析失败: ' + e.message);
|
||||
}
|
||||
|
||||
// 获取目标表格
|
||||
const table = document.querySelector('table.zx-detail-basic-table');
|
||||
if (!table) {
|
||||
alert('未找到企业信息表格');
|
||||
return;
|
||||
}
|
||||
|
||||
// 解析表格数据
|
||||
const companyData = {
|
||||
"企业名称": getOptimizedValue(table, "企业名称"),
|
||||
"统一社会信用代码": getUnifiedSocialCreditCode(table, "统一社会信用代码"),
|
||||
"法定代表人": getLegalRepresentative(table, "法定代表人"),
|
||||
"经营状态": getOptimizedValue(table, "经营状态"),
|
||||
"成立日期": getOptimizedValue(table, "成立日期"),
|
||||
"行政区划": getOptimizedValue(table, "行政区划"),
|
||||
"注册资本": getOptimizedValue(table, "注册资本"),
|
||||
"实缴资本": getOptimizedValue(table, "实缴资本"),
|
||||
"企业类型": getOptimizedValue(table, "企业类型"),
|
||||
"所属行业": getOptimizedValue(table, "所属行业"),
|
||||
"工商注册号": getBusinessRegistrationNo(table, "工商注册号"),
|
||||
"组织机构代码": getOrganizationCode(table),
|
||||
"纳税人识别号": getTaxpayerId(table, "纳税人识别号"),
|
||||
"纳税人资质": getOptimizedValue(table, "纳税人资质"),
|
||||
"营业期限": getOptimizedValue(table, "营业期限"),
|
||||
"核准日期": getApprovalDate(table, "核准日期"),
|
||||
"参保人数": getInsuranceNumber(table, "参保人数"),
|
||||
"登记机关": getOptimizedValue(table, "登记机关"),
|
||||
"曾用名": getOptimizedValue(table, "曾用名"),
|
||||
"注册地址": getOptimizedValue(table, "注册地址"),
|
||||
"经营范围": getOptimizedValue(table, "经营范围")
|
||||
};
|
||||
|
||||
// 显示解析结果
|
||||
showResult(companyData);
|
||||
});
|
||||
|
||||
container.appendChild(button);
|
||||
}
|
||||
|
||||
// 法定代表人提取方法(优化版)
|
||||
function getLegalRepresentative(table) {
|
||||
// 方法1:通过特定class组合定位
|
||||
const legalElements = Array.from(table.querySelectorAll('td')).filter(td =>
|
||||
cleanText(td.textContent) === '法定代表人'
|
||||
);
|
||||
|
||||
if (legalElements.length > 0) {
|
||||
const valueCell = legalElements[0].nextElementSibling;
|
||||
if (valueCell && valueCell.classList.contains('image-text-content')) {
|
||||
// 从包含头像的复杂结构中提取姓名
|
||||
const nameElement = valueCell.querySelector('.person-name-warp a');
|
||||
if (nameElement) {
|
||||
return cleanText(nameElement.textContent);
|
||||
}
|
||||
// 备用方案:直接提取单元格文本
|
||||
return cleanText(valueCell.textContent);
|
||||
}
|
||||
}
|
||||
|
||||
// 方法2:通过标题文本定位(备用方案)
|
||||
const titleElements = Array.from(table.querySelectorAll('td')).filter(td =>
|
||||
td.textContent.includes('法定代表人')
|
||||
);
|
||||
|
||||
if (titleElements.length > 0 && titleElements[0].nextElementSibling) {
|
||||
const valueCell = titleElements[0].nextElementSibling;
|
||||
return cleanText(valueCell.textContent);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// 核准日期提取方法(优化版)
|
||||
function getApprovalDate(table) {
|
||||
// 方法1:通过特定class组合定位
|
||||
const approvalElements = Array.from(table.querySelectorAll('.poptip-wrap-annual-date')).filter(el =>
|
||||
el.textContent.includes('核准日期')
|
||||
);
|
||||
|
||||
if (approvalElements.length > 0) {
|
||||
const valueCell = approvalElements[0].closest('td').nextElementSibling;
|
||||
if (valueCell) {
|
||||
const rawValue = valueCell.textContent.replace(/[\r\n\t]/g, '').trim();
|
||||
// 验证日期格式
|
||||
if (/^\d{4}-\d{2}-\d{2}$/.test(rawValue)) {
|
||||
return rawValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 方法2:通过标题文本定位
|
||||
const titleElements = Array.from(table.querySelectorAll('td')).filter(td =>
|
||||
cleanText(td.textContent) === '核准日期'
|
||||
);
|
||||
|
||||
if (titleElements.length > 0 && titleElements[0].nextElementSibling) {
|
||||
const valueCell = titleElements[0].nextElementSibling;
|
||||
const rawValue = cleanText(valueCell.textContent);
|
||||
if (/^\d{4}-\d{2}-\d{2}$/.test(rawValue)) {
|
||||
return rawValue;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// 组织机构代码提取方法
|
||||
function getOrganizationCode(table) {
|
||||
// 方法1:通过特定class组合定位
|
||||
const orgCodeElements = Array.from(table.querySelectorAll('.poptip-wrap-org-no')).filter(el =>
|
||||
el.textContent.includes('组织机构代码')
|
||||
);
|
||||
|
||||
if (orgCodeElements.length > 0) {
|
||||
const valueCell = orgCodeElements[0].closest('td').nextElementSibling;
|
||||
if (valueCell && valueCell.classList.contains('enter-bg')) {
|
||||
const rawValue = valueCell.querySelector('.enter-bg-ele')?.textContent || valueCell.textContent;
|
||||
return cleanText(rawValue);
|
||||
}
|
||||
}
|
||||
|
||||
// 方法2:通过标题文本定位
|
||||
const titleElements = Array.from(table.querySelectorAll('td')).filter(td =>
|
||||
cleanText(td.textContent) === '组织机构代码'
|
||||
);
|
||||
|
||||
if (titleElements.length > 0 && titleElements[0].nextElementSibling) {
|
||||
const valueCell = titleElements[0].nextElementSibling;
|
||||
const rawValue = valueCell.querySelector('.enter-bg-ele')?.textContent || valueCell.textContent;
|
||||
return cleanText(rawValue);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// 纳税人识别号提取方法
|
||||
function getTaxpayerId(table) {
|
||||
// 方法1:尝试直接获取纳税人识别号
|
||||
const taxElements = Array.from(table.querySelectorAll('td')).filter(td =>
|
||||
cleanText(td.textContent).includes('纳税人识别号')
|
||||
);
|
||||
|
||||
if (taxElements.length > 0 && taxElements[0].nextElementSibling) {
|
||||
const valueCell = taxElements[0].nextElementSibling;
|
||||
const rawValue = valueCell.querySelector('.enter-bg-ele')?.textContent || valueCell.textContent;
|
||||
return cleanText(rawValue);
|
||||
}
|
||||
|
||||
// 方法2:使用统一社会信用代码(通常与纳税人识别号相同)
|
||||
const creditElements = Array.from(table.querySelectorAll('td')).filter(td =>
|
||||
cleanText(td.textContent).includes('统一社会信用代码')
|
||||
);
|
||||
|
||||
if (creditElements.length > 0 && creditElements[0].nextElementSibling) {
|
||||
const valueCell = creditElements[0].nextElementSibling;
|
||||
const rawValue = valueCell.querySelector('.enter-bg-ele')?.textContent || valueCell.textContent;
|
||||
return cleanText(rawValue);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// 工商注册号提取方法
|
||||
function getBusinessRegistrationNo(table) {
|
||||
const regElements = Array.from(table.querySelectorAll('td')).filter(td =>
|
||||
cleanText(td.textContent).includes('工商注册号')
|
||||
);
|
||||
|
||||
if (regElements.length > 0 && regElements[0].nextElementSibling) {
|
||||
const valueCell = regElements[0].nextElementSibling;
|
||||
const rawValue = valueCell.querySelector('.enter-bg-ele')?.textContent || valueCell.textContent;
|
||||
return cleanText(rawValue);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// 专用参保人数提取方法
|
||||
function getInsuranceNumber(table) {
|
||||
// 方法1:通过标题和特定class组合定位
|
||||
const insuranceElements = Array.from(table.querySelectorAll('td')).filter(td => {
|
||||
return td.textContent.includes('参保人数') &&
|
||||
td.querySelector('.insurance-info');
|
||||
});
|
||||
|
||||
if (insuranceElements.length > 0) {
|
||||
const valueCell = insuranceElements[0].nextElementSibling;
|
||||
if (!valueCell) return null;
|
||||
|
||||
// 提取纯文本内容,过滤掉img标签
|
||||
const rawText = valueCell.textContent.replace(/[\r\n\t]/g, '').trim();
|
||||
// 匹配"数字+人"格式
|
||||
const match = rawText.match(/(\d+人)/);
|
||||
return match ? match[0] : null;
|
||||
}
|
||||
|
||||
// 方法2:备用方案,通过相邻单元格内容定位
|
||||
const registrationElements = Array.from(table.querySelectorAll('td')).filter(td =>
|
||||
td.textContent.includes('登记机关')
|
||||
);
|
||||
|
||||
if (registrationElements.length > 0 && registrationElements[0].previousElementSibling) {
|
||||
const valueCell = registrationElements[0].previousElementSibling;
|
||||
const rawText = valueCell.textContent.replace(/[\r\n\t]/g, '').trim();
|
||||
const match = rawText.match(/(\d+人)/);
|
||||
return match ? match[0] : null;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 优化后的统一社会信用代码提取方法
|
||||
function getUnifiedSocialCreditCode(table) {
|
||||
// 方法1:直接通过标题定位
|
||||
const codeElements = Array.from(table.querySelectorAll('td')).filter(td => {
|
||||
return td.textContent.includes('统一社会信用代码') &&
|
||||
td.nextElementSibling &&
|
||||
td.nextElementSibling.classList.contains('table-regCapital-lable');
|
||||
});
|
||||
|
||||
if (codeElements.length > 0) {
|
||||
const valueCell = codeElements[0].nextElementSibling;
|
||||
const rawValue = valueCell.querySelector('.enter-bg-ele')?.textContent || valueCell.textContent;
|
||||
return cleanText(rawValue);
|
||||
}
|
||||
|
||||
// 方法2:备用方案,通过纳税人识别号获取(通常与统一社会信用代码相同)
|
||||
const taxElements = Array.from(table.querySelectorAll('td')).filter(td =>
|
||||
td.textContent.includes('纳税人识别号')
|
||||
);
|
||||
|
||||
if (taxElements.length > 0 && taxElements[0].nextElementSibling) {
|
||||
const valueCell = taxElements[0].nextElementSibling;
|
||||
const rawValue = valueCell.querySelector('.enter-bg-ele')?.textContent || valueCell.textContent;
|
||||
return cleanText(rawValue);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
// 通用优化字段提取方法
|
||||
function getOptimizedValue(table, title) {
|
||||
const cells = Array.from(table.querySelectorAll('td'));
|
||||
const titleCell = cells.find(cell => cleanText(cell.textContent) === title);
|
||||
|
||||
if (!titleCell) return null;
|
||||
|
||||
// 查找值单元格(考虑多种DOM结构情况)
|
||||
let valueCell = titleCell.nextElementSibling;
|
||||
if (!valueCell) return null;
|
||||
|
||||
// 优先提取.enter-bg-ele内的值,若无则直接取单元格文本
|
||||
const valueElement = valueCell.querySelector('.enter-bg-ele') ||
|
||||
valueCell.querySelector('.addr-enter-bg-ele') ||
|
||||
valueCell;
|
||||
|
||||
return cleanText(valueElement.textContent);
|
||||
}
|
||||
|
||||
// 文本清理函数
|
||||
function cleanText(text) {
|
||||
return text.replace(/\s+/g, ' ').replace(/[\r\n\t]/g, '').trim();
|
||||
}
|
||||
|
||||
// 辅助函数:显示解析结果
|
||||
function showResult(data) {
|
||||
// 创建弹窗
|
||||
const modal = document.createElement('div');
|
||||
modal.style.position = 'fixed';
|
||||
modal.style.top = '50%';
|
||||
modal.style.left = '50%';
|
||||
modal.style.transform = 'translate(-50%, -50%)';
|
||||
modal.style.width = '600px';
|
||||
modal.style.maxHeight = '80vh';
|
||||
modal.style.overflowY = 'auto';
|
||||
modal.style.backgroundColor = 'white';
|
||||
modal.style.padding = '20px';
|
||||
modal.style.boxShadow = '0 0 10px rgba(0,0,0,0.3)';
|
||||
modal.style.zIndex = '10000';
|
||||
|
||||
// 创建JSON显示区域
|
||||
const pre = document.createElement('pre');
|
||||
pre.textContent = JSON.stringify(data, null, 2);
|
||||
pre.style.whiteSpace = 'pre-wrap';
|
||||
pre.style.wordWrap = 'break-word';
|
||||
|
||||
// 创建复制按钮
|
||||
const copyBtn = document.createElement('button');
|
||||
copyBtn.textContent = '复制JSON';
|
||||
copyBtn.style.marginTop = '10px';
|
||||
copyBtn.style.padding = '8px 16px';
|
||||
copyBtn.style.backgroundColor = '#52c41a';
|
||||
copyBtn.style.color = 'white';
|
||||
copyBtn.style.border = 'none';
|
||||
copyBtn.style.borderRadius = '4px';
|
||||
copyBtn.style.cursor = 'pointer';
|
||||
|
||||
copyBtn.addEventListener('click', function() {
|
||||
navigator.clipboard.writeText(JSON.stringify(data, null, 2))
|
||||
.then(() => alert('已复制到剪贴板'))
|
||||
.catch(err => alert('复制失败: ' + err));
|
||||
});
|
||||
|
||||
// 创建关闭按钮
|
||||
const closeBtn = document.createElement('button');
|
||||
closeBtn.textContent = '关闭';
|
||||
closeBtn.style.marginLeft = '10px';
|
||||
closeBtn.style.marginTop = '10px';
|
||||
closeBtn.style.padding = '8px 16px';
|
||||
closeBtn.style.backgroundColor = '#f5222d';
|
||||
closeBtn.style.color = 'white';
|
||||
closeBtn.style.border = 'none';
|
||||
closeBtn.style.borderRadius = '4px';
|
||||
closeBtn.style.cursor = 'pointer';
|
||||
|
||||
closeBtn.addEventListener('click', function() {
|
||||
document.body.removeChild(modal);
|
||||
});
|
||||
|
||||
// 组装弹窗内容
|
||||
modal.innerHTML = '<h2 style="margin-top: 0;">企业信息解析结果</h2>';
|
||||
modal.appendChild(pre);
|
||||
modal.appendChild(document.createElement('br'));
|
||||
modal.appendChild(copyBtn);
|
||||
modal.appendChild(closeBtn);
|
||||
|
||||
document.body.appendChild(modal);
|
||||
}
|
||||
|
||||
// 解析公司信息函数
|
||||
function parseCompanyInfo(html) {
|
||||
// 创建临时DOM解析器
|
||||
const parser = new DOMParser();
|
||||
const doc = parser.parseFromString(html, 'text/html');
|
||||
|
||||
// 常见公司信息字段解析
|
||||
const companyInfo = {
|
||||
name: extractText(doc, [
|
||||
'.company-name',
|
||||
'.company-title',
|
||||
'h1',
|
||||
'title'
|
||||
]),
|
||||
socialCreditCodeText: extractText(doc,[
|
||||
'.social-credit-code-text'
|
||||
]),
|
||||
|
||||
legalRepresentative: extractText(doc, [
|
||||
|
||||
'.legal-representative span.a',
|
||||
'.legal-person',
|
||||
'[itemprop="founder"]'
|
||||
]),
|
||||
registeredCapital: extractText(doc, [
|
||||
'.registered-capital',
|
||||
'.capital',
|
||||
'[itemprop="foundingFund"]'
|
||||
]),
|
||||
registrationDate: extractText(doc, [
|
||||
'.registration-date',
|
||||
'.establish-date',
|
||||
'[itemprop="foundingDate"]'
|
||||
]),
|
||||
businessScope: extractText(doc, [
|
||||
'.business-scope',
|
||||
'.scope',
|
||||
'[itemprop="knowsAbout"]'
|
||||
]),
|
||||
address: extractText(doc, [
|
||||
'.addr-enter-bg-ele',
|
||||
'.company-address',
|
||||
'.address',
|
||||
'[itemprop="address"]'
|
||||
]),
|
||||
phone: extractText(doc, [
|
||||
'[data-log-title="detail-head-phone"] span',
|
||||
'.company-phone',
|
||||
'.contact-phone',
|
||||
'[itemprop="telephone"]'
|
||||
])
|
||||
};
|
||||
|
||||
return companyInfo;
|
||||
}
|
||||
|
||||
// 辅助函数:从多个可能的选择器中提取文本
|
||||
function extractText(doc, selectors) {
|
||||
for (const selector of selectors) {
|
||||
const element = doc.querySelector(selector);
|
||||
if (element && element.textContent.trim()) {
|
||||
return element.textContent.trim();
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
// 辅助函数:复制到剪贴板
|
||||
function copyToClipboard(content, successMessage) {
|
||||
const textarea = document.createElement('textarea');
|
||||
textarea.value = content;
|
||||
textarea.style.position = 'fixed';
|
||||
textarea.style.top = '0';
|
||||
textarea.style.left = '0';
|
||||
textarea.style.width = '1px';
|
||||
textarea.style.height = '1px';
|
||||
textarea.style.opacity = '0';
|
||||
|
||||
document.body.appendChild(textarea);
|
||||
textarea.select();
|
||||
document.execCommand('copy');
|
||||
document.body.removeChild(textarea);
|
||||
|
||||
if (successMessage) {
|
||||
alert(successMessage);
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化代码修改
|
||||
const {container, addButton} = createButtonContainer();
|
||||
addButton(createSourceButton());
|
||||
addButton(createParserButton());
|
||||
|
||||
})();
|
||||
Reference in New Issue
Block a user