如何用Python Selenium读写指定结构的names.json文件?
Python 读写 names.json 文件(结合 Selenium 数据采集)
读取文件内容
要读取names.json里的ignored列表,直接用Python内置的json模块即可:
import json # 读取names.json文件 try: with open("names.json", "r", encoding="utf-8") as f: data = json.load(f) ignored_names = data.get("ignored", []) # 若key不存在,返回空列表 print("已读取的忽略名称:", ignored_names) except FileNotFoundError: # 如果文件不存在,初始化空的ignored列表 ignored_names = [] print("文件不存在,初始化空列表")
写入/更新文件内容
假设你通过Selenium的for循环获取到了新的名称列表,以下是两种常见的写入场景:
场景1:追加新获取的名称(自动去重)
import json from selenium import webdriver from selenium.webdriver.common.by import By # 初始化Selenium驱动(示例) driver = webdriver.Chrome() driver.get("你的目标页面URL") # 模拟for循环获取名称 new_names = [] # 假设页面上的名称元素选择器是'.name-item',根据实际情况修改 for name_element in driver.find_elements(By.CSS_SELECTOR, ".name-item"): name = name_element.text.strip() if name: new_names.append(name) driver.quit() # 读取原有数据(如果存在) try: with open("names.json", "r", encoding="utf-8") as f: data = json.load(f) except FileNotFoundError: # 文件不存在时初始化指定结构 data = {"ignored": []} # 合并新名称并去重 existing_names = set(data["ignored"]) existing_names.update(new_names) data["ignored"] = sorted(list(existing_names)) # 可选:对列表排序 # 写入文件,保持格式美观 with open("names.json", "w", encoding="utf-8") as f: json.dump(data, f, indent=4, ensure_ascii=False) print(f"已成功写入{len(new_names)}个新名称到文件")
场景2:完全覆盖原有内容
如果需要用新获取的名称直接替换原来的ignored列表,修改合并部分即可:
# 直接替换ignored列表 data["ignored"] = new_names # 后续写入代码同上 with open("names.json", "w", encoding="utf-8") as f: json.dump(data, f, indent=4, ensure_ascii=False)
内容的提问来源于stack exchange,提问作者Spino
相关产品推荐
相关产品推荐

