如何用Python(含Selenium)高效提取网页字母布局与可用字母数据?
提取Kurnik Literaki棋盘数据的高效方案
由于目标网站的棋盘和字母数据是通过JavaScript动态渲染的,静态爬取(如requests库)无法获取到最终的DOM内容,必须使用Selenium这类模拟浏览器的工具来提取数据。以下是具体实现步骤:
1. 环境准备
- 安装Selenium:
pip install selenium - 下载对应浏览器的驱动(如ChromeDriver),确保驱动版本与浏览器版本匹配,可将驱动路径配置到系统环境变量,或在初始化浏览器时直接指定路径。
2. 核心实现步骤
初始化浏览器并等待页面加载
启动浏览器访问目标网站,通过WebDriverWait等待关键元素加载完成,避免因DOM未渲染完全导致提取失败。
提取棋盘布局
通过浏览器开发者工具查看棋盘格子的DOM属性(如class),遍历所有格子,将每个格子的字母(空格子记为空字符串)整理成15x15的二维数组。
提取可用字母
找到玩家字母池的DOM元素,提取每个字母并组成列表。
保存数据到文本文件
将棋盘数组和可用字母列表格式化后写入本地文本文件。
3. 示例代码
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化Chrome浏览器(若驱动未在环境变量,需指定executable_path参数) driver = webdriver.Chrome() driver.get("https://www.kurnik.pl/literaki") # 等待棋盘元素加载完成(根据实际页面DOM调整选择器) wait = WebDriverWait(driver, 10) wait.until(EC.presence_of_element_located((By.CLASS_NAME, "literaki-board-cell"))) # 提取15x15的棋盘布局 board_cells = driver.find_elements(By.CLASS_NAME, "literaki-board-cell") board = [] current_row = [] for idx, cell in enumerate(board_cells): # 提取格子中的字母,空格子用空字符串表示 letter = cell.text.strip() if cell.text.strip() else "" current_row.append(letter) # 每15个格子组成一行 if (idx + 1) % 15 == 0: board.append(current_row) current_row = [] # 提取玩家当前可用字母 rack_tiles = driver.find_elements(By.CLASS_NAME, "literaki-rack-tile") available_letters = [tile.text.strip() for tile in rack_tiles] # 写入文本文件 with open("literaki_record.txt", "w", encoding="utf-8") as f: f.write("棋盘布局:\n") for row in board: f.write(" ".join(row) + "\n") f.write("\n可用字母:\n") f.write(" ".join(available_letters) + "\n") # 关闭浏览器 driver.quit()
注意事项
- DOM选择器调整:网站可能会更新页面结构,需通过浏览器开发者工具(F12)确认棋盘格子和字母池的最新class或元素属性,替换代码中的选择器。
- 登录处理:若需要登录才能进入游戏页面,需在代码中添加登录步骤(如定位账号密码输入框、点击登录按钮)。
- Headless模式:可启用浏览器的headless模式,避免弹出浏览器窗口,提升运行效率:
options = webdriver.ChromeOptions() options.add_argument("--headless=new") driver = webdriver.Chrome(options=options)
内容的提问来源于stack exchange,提问作者user18448131
相关产品推荐
相关产品推荐

