2025/12/28 18:03:50
网站建设
项目流程
做网站开发的有哪些公司,蚂蜂窝网站源码,后台网站手机版视频怎么做,如何写一个可以做报价计算的网站#!/usr/bin/env python3
-- coding: utf-8 --
“”
CNAS查询结果保存脚本
使用说明#xff1a;
脚本将自动打开Chrome浏览器并访问CNAS查询网站请您在浏览器中手动输入搜索内容并提交查询搜索完成后#xff0c;请您手动点击要查看的链接#xff0c;打开弹出网页脚本将…#!/usr/bin/env python3-- coding: utf-8 --“”CNAS查询结果保存脚本使用说明脚本将自动打开Chrome浏览器并访问CNAS查询网站请您在浏览器中手动输入搜索内容并提交查询搜索完成后请您手动点击要查看的链接打开弹出网页脚本将自动检测新窗口并将其内容保存为xlsx文件保存完成后按回车键退出程序依赖安装pip install selenium webdriver-manager pandas beautifulsoup4 openpyxl“”尝试导入必要的模块try:from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsfrom selenium.webdriver.chrome.service import Servicefrom webdriver_manager.chrome import ChromeDriverManagerimport pandas as pdfrom bs4 import BeautifulSoupimport datetimeimport timeimport reexcept ModuleNotFoundError as e:print(f错误: 未找到模块 - {e})print(“请先安装依赖: pip install selenium webdriver-manager pandas beautifulsoup4 openpyxl”)print(“然后再次运行脚本”)exit(1)设置Chrome选项CHROME_OPTIONS Options()CHROME_OPTIONS.add_argument(“–start-maximized”)CHROME_OPTIONS.add_argument(“–disable-blink-featuresAutomationControlled”)CHROME_OPTIONS.add_argument(“user-agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36”)保存内容为xlsx文件的函数def save_to_excel(driver, window_handle):“”“将网页内容保存为xlsx文件包括所有表格和完整页面文本”“”# 切换到目标窗口driver.switch_to.window(window_handle)print(f\n 处理窗口: {driver.title} )# 获取页面内容 page_content driver.page_source # 解析页面 soup BeautifulSoup(page_content, html.parser) # 提取页面标题 page_title soup.title.string.strip() if soup.title else 无标题 print(f页面标题: {page_title}) # 提取页面中的表格 tables soup.find_all(table) print(f找到 {len(tables)} 个表格) # 提取完整页面文本 text_content soup.get_text() cleaned_text re.sub(r\s, , text_content).strip() print(f页面文本长度: {len(cleaned_text)} 字符) # 生成文件名 timestamp datetime.datetime.now().strftime(%Y%m%d_%H%M%S) filename fcnas_result_{timestamp}.xlsx # 创建Excel写入器 with pd.ExcelWriter(filename, engineopenpyxl) as writer: # 1. 保存完整页面文本到专门的工作表 text_df pd.DataFrame({ 页面标题: [page_title], 页面完整内容: [cleaned_text] }) text_df.to_excel(writer, sheet_name页面文本, indexFalse) print(已保存完整页面文本到工作表: 页面文本) # 2. 保存所有表格到不同的工作表 for i, table in enumerate(tables): try: # 使用pandas读取表格 df pd.read_html(str(table))[0] # 设置工作表名称 sheet_name f表格{i 1} if len(sheet_name) 31: # Excel工作表名称不能超过31个字符 sheet_name sheet_name[:31] # 保存表格到工作表 df.to_excel(writer, sheet_namesheet_name, indexFalse) print(f已保存第 {i 1} 个表格到工作表: {sheet_name}) except Exception as e: print(f处理第 {i 1} 个表格失败: {e}) # 3. 保存页面元信息 meta_df pd.DataFrame({ 项目: [页面标题, URL, 保存时间, 表格数量, 页面文本长度], 值: [ page_title, driver.current_url, datetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S), len(tables), len(cleaned_text) ] }) meta_df.to_excel(writer, sheet_name元信息, indexFalse) print(已保存页面元信息到工作表: 元信息) print(f\n所有内容已成功保存到文件: {filename}) print(f文件包含: 1个页面文本工作表 {len(tables)}个表格工作表 1个元信息工作表) return filename主程序def main():“”“主函数”“”print(“CNAS查询结果保存脚本”)print(“” * 50)print(“使用步骤:”)print(“1. 脚本将自动打开Chrome浏览器并访问CNAS查询网站”)print(“2. 请您在浏览器中手动输入搜索内容并提交查询”)print(“3. 搜索完成后请您手动点击要查看的链接打开弹出网页”)print(“4. 脚本将自动检测新窗口并将其内容保存为xlsx文件”)print(“5. 保存完成后按回车键退出程序”)print(“” * 50)# 初始化WebDriver print(正在初始化浏览器...) service Service(ChromeDriverManager().install()) driver webdriver.Chrome(serviceservice, optionsCHROME_OPTIONS) # 保存原始窗口句柄 original_window driver.current_window_handle try: # 访问目标URL url https://www.cnas.org.cn/sfcxxt/index.html?tpl/LAS_FQ/publish/externalQueryL1.jspname%E8%8E%B7%E8%AE%A4%E5%8F%AF%E6%A3%80%E6%B5%8B%E5%92%8C%E6%A0%A1%E5%87%86%E5%AE%9E%E9%AA%8C%E5%AE%A4%E4%BF%A1%E6%81%AF%E6%9F%A5%E8%AF%A2 print(f正在访问URL: {url}) driver.get(url) print(\n浏览器已打开请您手动完成以下操作:) print(1. 在浏览器中输入搜索内容) print(2. 提交查询) print(3. 点击查询结果中的链接打开弹出网页) print(\n脚本将持续监控新窗口的出现...) # 持续监控窗口变化 while True: # 获取当前所有窗口句柄 current_windows driver.window_handles # 如果发现新窗口 if len(current_windows) 1: # 找到新窗口 new_window None for window in current_windows: if window ! original_window: new_window window break if new_window: print(f\n发现新窗口正在保存内容...) # 保存新窗口内容 save_to_excel(driver, new_window) # 关闭新窗口 driver.close() # 切换回原始窗口 driver.switch_to.window(original_window) # 询问是否继续监控 print(\n是否继续监控新窗口(y/n): ) choice input().strip().lower() if choice ! y: break # 每2秒检查一次 time.sleep(2) print(\n程序执行完成) except Exception as e: print(f\n发生错误: {e}) finally: # 关闭浏览器 input(\n按回车键关闭浏览器并退出...) driver.quit() print(浏览器已关闭)ifname “main”:main()