如何使用Selenium以文本格式打印Web元素列表
解决Selenium Web元素可读文本打印问题
你现在的问题是直接将Selenium的WebElement对象存入列表,打印时自然只会显示对象的会话标识,而非实际文本内容。要获取可读文本,需要提取元素的文本内容或对应属性,核心是使用.text属性(获取元素显示文本),部分场景可能需要用get_attribute()获取特定属性值。
修改后的代码
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get("https://www.morphmarket.com/all/c/reptiles/pythons/ball-pythons") wait = WebDriverWait(driver, 10) snakes = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "a.animalCard--avL0R"))) links = [i.get_attribute("href") for i in snakes] # 简化列表推导式 elements_details = [] for link in links: driver.get(link) # 提取每个字段的文本内容,而非存储WebElement对象 snake_info = {} snake_info["genes"] = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "h1.animalTitle--cH6qE"))).text snake_info["snake"] = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "h2.animalSubTitle--mhYId"))).text snake_info["price"] = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "h1.salePrice--qNIIs"))).text # 处理Birth相关信息,提取每个元素的文本 birth_elements = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.labelValueContainer--z1CP3"))) snake_info["birth_info"] = [birth.text for birth in birth_elements] # 处理公司信息,提取文本 company_elements = wait.until(EC.visibility_of_all_elements_located((By.XPATH, "(//div[@class='infoWrapper--O_L9E'])[2]"))) snake_info["company_info"] = [element.text for element in company_elements] elements_details.append(snake_info) # 打印单条蛇的信息,更易读 print("当前蛇信息:") for key, value in snake_info.items(): print(f"{key}: {value}") print("-" * 50) # 最后打印所有收集到的信息 print("\n所有蛇的信息汇总:") for idx, info in enumerate(elements_details, 1): print(f"\n第{idx}条蛇:") for key, value in info.items(): print(f"{key}: {value}") driver.quit()
关键修改点
- 用
.text属性替换直接存储WebElement对象,获取元素的实际显示文本 - 优化数据结构:每条蛇的信息存入一个字典,避免零散的条目,结构更清晰
- 修复拼写错误:将
brith改为正确的birth - 使用列表推导式简化代码(如
links的生成) - 调整打印逻辑,逐条打印单条蛇的信息,可读性更强
内容的提问来源于stack exchange,提问作者user22428402
相关产品推荐
相关产品推荐

