如何使用Selenium识别网站中使用的所有唯一标签(附BeautifulSoup等价实现对比)
使用Selenium获取网页所有唯一HTML标签
嘿,你的思路完全没问题——通过定位页面所有元素来提取标签名再去重,刚好可以把这个实现变得更简洁优雅,而且不用依赖pandas,用Python原生的集合就能搞定,代码也更紧凑:
优化后的代码
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By website = 'https://www.afr.com' # 初始化Chrome浏览器并加载目标页面 driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) driver.get(website) # 用集合推导式直接收集所有唯一标签名(集合自动去重) unique_tags = {element.tag_name for element in driver.find_elements(By.CSS_SELECTOR, '*')} # 排序后输出,看起来更规整 for tag in sorted(unique_tags): print(tag) # 记得关闭浏览器,避免残留进程 driver.quit()
为什么这个写法更顺手?
- 原生去重更高效:Python的集合(
set)天生就是用来处理唯一值的,不需要额外引入pandas,减少依赖的同时运行速度也更快 - 代码更简洁:用集合推导式一行完成标签收集和去重,替代了原来循环追加列表再转Series的冗余步骤
- 可读性拉满:逻辑一目了然,别人看代码瞬间就能get到你是在收集页面所有唯一标签
- 小细节优化:加了
driver.quit()确保浏览器正常关闭;用sorted()把标签按字母排序输出,方便你做网页结构分析时查看
如果你需要分步写(比如调试的时候想一步步看),也可以简化成这样:
# 分步调试版 elements = driver.find_elements(By.CSS_SELECTOR, '*') tag_list = [elem.tag_name for elem in elements] unique_tags = set(tag_list)
这样既满足了你“获取所有唯一标签做网页结构分析”的需求,代码也更清爽高效~
内容的提问来源于stack exchange,提问作者ARH
相关产品推荐
相关产品推荐

