使用Python Selenium从网页提取Melde-ID值的技术求助
提取Melde-ID的Selenium实现方案
根据你提供的HTML结构,以下是两种可靠的元素定位及值提取方法:
方法1:从<h3 class="title">元素中提取
针对包含Melde-ID: 355460的标题元素,通过XPATH定位包含关键字的元素,再拆分文本获取ID值:
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 url = "https://...." driver = webdriver.Chrome('./chromedriver') driver.maximize_window() driver.get(url) try: # 等待元素可见,定位包含"Melde-ID"的h3元素 melde_id_element = WebDriverWait(driver, 20).until( EC.visibility_of_element_located((By.XPATH, "//h3[contains(normalize-space(text()), 'Melde-ID')]")) ) # 提取并处理文本,分离出ID值 raw_text = melde_id_element.text.strip() melde_id = raw_text.split(":")[1].strip() print(f"提取到的Melde-ID: {melde_id}") finally: driver.quit()
方法2:通过标签对(label+value)定位
针对<div class="label">Melde-ID</div>与对应<div class="value">的结构,通过兄弟元素定位获取值:
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 url = "https://...." driver = webdriver.Chrome('./chromedriver') driver.maximize_window() driver.get(url) try: # 定位label为"Melde-ID"的元素,再获取其相邻的value元素 value_element = WebDriverWait(driver, 20).until( EC.visibility_of_element_located((By.XPATH, "//div[@class='label' and normalize-space(text())='Melde-ID']/following-sibling::div[@class='value']")) ) melde_id = value_element.text.strip() print(f"提取到的Melde-ID: {melde_id}") finally: driver.quit()
关键注意事项
- 替换你原有代码中
0.5秒的隐式等待为20秒的显式等待,JS渲染页面的元素加载时间不稳定,显式等待能确保元素加载完成后再操作 - 不要使用
_ngcontent-wwf-c32这类Angular动态生成的属性,这类属性会随页面部署更新,导致定位失效 - 如果目标元素位于iframe内,需要先切换到iframe再执行定位:
driver.switch_to.frame("iframe的ID或名称")
内容的提问来源于stack exchange,提问作者callme-matt
相关产品推荐
相关产品推荐

