commit f2f0e33b03d018c90ef5c42fbcc537d59b1eaed0 Author: manchuwork Date: Tue Aug 5 13:16:18 2025 +0800 init diff --git a/htmlheadstyle class=vjs-styles-defa.txt b/htmlheadstyle class=vjs-styles-defa.txt new file mode 100644 index 0000000..b74119c --- /dev/null +++ b/htmlheadstyle class=vjs-styles-defa.txt @@ -0,0 +1,1625 @@ + 杭州奥杰装饰工程有限公司 - 奥杰装饰 - 爱企查
+ 查企业 + + 查老板 + + 查关系 +
close
+ 查企业 +
vip专区
+ 应用 +
\ No newline at end of file diff --git a/script.txt b/script.txt new file mode 100644 index 0000000..28c0801 --- /dev/null +++ b/script.txt @@ -0,0 +1,633 @@ + +// ==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.overflow = 'hidden'; + container.style.borderRadius = '50%'; + container.style.backgroundColor = 'rgba(0,0,0,0.7)'; + container.style.padding = '10px'; + container.style.cursor = 'move'; + + // 添加悬浮效果 + container.addEventListener('mouseenter', function() { + this.style.width = 'auto'; + this.style.borderRadius = '5px'; + }); + + container.addEventListener('mouseleave', function() { + this.style.width = '40px'; + this.style.borderRadius = '50%'; + }); + + // 添加拖动功能 + let isDragging = false; + let offsetX, offsetY; + + container.addEventListener('mousedown', function(e) { + isDragging = true; + offsetX = e.clientX - this.getBoundingClientRect().left; + offsetY = e.clientY - this.getBoundingClientRect().top; + this.style.cursor = 'grabbing'; + }); + + document.addEventListener('mousemove', function(e) { + if (!isDragging) return; + const container = document.getElementById('tm-button-container'); + container.style.left = (e.clientX - offsetX) + 'px'; + container.style.top = (e.clientY - offsetY) + 'px'; + container.style.right = 'auto'; + container.style.bottom = 'auto'; + }); + + document.addEventListener('mouseup', function() { + isDragging = false; + document.getElementById('tm-button-container').style.cursor = 'move'; + }); + + // 创建+号指示器 + const plusIndicator = document.createElement('div'); + plusIndicator.textContent = '+'; + plusIndicator.style.color = 'white'; + plusIndicator.style.fontSize = '24px'; + plusIndicator.style.textAlign = 'center'; + plusIndicator.style.marginBottom = '10px'; + plusIndicator.style.cursor = 'pointer'; + + // 点击+号也可以展开 + plusIndicator.addEventListener('click', function() { + const container = document.getElementById('tm-button-container'); + if (container.style.width === '40px') { + container.style.width = 'auto'; + container.style.borderRadius = '5px'; + } else { + container.style.width = '40px'; + container.style.borderRadius = '50%'; + } + }); + + container.appendChild(plusIndicator); + document.body.appendChild(container); + return container; +} + + // 创建按钮(修改版) +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.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 = '

企业信息解析结果

'; + 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 = createButtonContainer(); +createSourceButton(container); +createParserButton(container); + +})(); diff --git a/script1.txt b/script1.txt new file mode 100644 index 0000000..578f50e --- /dev/null +++ b/script1.txt @@ -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 = '

企业信息解析结果

'; + 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()); + +})(); diff --git a/杭州奥杰装饰-basic.txt b/杭州奥杰装饰-basic.txt new file mode 100644 index 0000000..c5d672a --- /dev/null +++ b/杭州奥杰装饰-basic.txt @@ -0,0 +1,69 @@ +
企业名称 + 杭州奥杰装饰工程有限公司 +
+ 统一社会信用代码 +
+ 9133011031131201XU +
+ 法定代表人 +
经营状态开业
成立日期 + 2014-08-05 + 行政区划浙江省杭州市余杭区
+ 注册资本 +
+ 200万(元) + + 实缴资本 +
+ 200万(元) +
企业类型 + 有限责任公司(自然人独资) + 所属行业 + 批发业 +
+ 工商注册号 +
+ 330184000311238 +
+ 组织机构代码 +
31131201-X
+ 纳税人识别号 +
9133011031131201XU + 纳税人资质 +
增值税一般纳税人
+ 营业期限 +
2014-08-05 至 2034-08-04
+ 核准日期 +
2020-08-24
+ 参保人数 +
+ 3人 + 登记机关 + 杭州市余杭区市场监督管理局 +
曾用名

+ 杭州茂复建材有限公司 +

注册地址浙江省杭州市余杭区五常街道郭家兜路8号1幢4楼408室 + 查看地图 +
+ 经营范围 +
设计、施工:建筑工程、室内外装饰工程、幕墙工程;销售:建筑材料,装饰材料,石材,五金;服务:铝合金门窗上门安装,建筑工程技术咨询,国内广告设计和制作。(依法须经批准的项目,经相关部门批准后方可开展经营活动) +
\ No newline at end of file diff --git a/杭州奥杰装饰.txt b/杭州奥杰装饰.txt new file mode 100644 index 0000000..f60957d --- /dev/null +++ b/杭州奥杰装饰.txt @@ -0,0 +1,1647 @@ + 杭州奥杰装饰工程有限公司 - 奥杰装饰 - 爱企查
+ 查企业 + + 查老板 + + 查关系 +
close
+ 查企业 +
vip专区
+ 应用 +
\ No newline at end of file