Python操作网页时如何仅提取HTML元素中指定8位数字到目标输入框
代码调整方案
核心改动很简单:在拿到元素的全量文本后、往输入框粘贴之前,先做一层字符串截取,只保留需要的8位数字片段,再执行输入。两种实现按需选择:
方案1:轻量截取(适配当前固定格式)
你的页面ID输出是固定结构:「8位数字 + 空格 + 短横线 + 括号包裹的十六进制值」,直接按第一个空格分割取前面的内容就刚好是目标ID,不需要引入额外依赖:
# 保留你原本写的元素定位逻辑 content_full = driver.find_element_by_xpath("//div[@class='col-md-8 input-group col-form-label']").text # 新增处理逻辑:取第一个空格前的文本,也就是8位数字部分 target_id = content_full.split(' ')[0] # 后续输入操作和原代码完全一致 folder = driver.find_element_by_xpath("//input[@data-id='projEditFormInptCustomerReference']") folder.send_keys(target_id)
方案2:高容错匹配(抗页面变动)
如果担心后续页面排版微调——比如多了前导空格、分隔符位置换了——导致简单分割失效,可以用正则直接抓文本里第一段连续的8位数字,不管前面有没有杂七杂八的内容都能精准抓到:
import re # 原有定位逻辑不变 content_full = driver.find_element_by_xpath("//div[@class='col-md-8 input-group col-form-label']").text # 正则匹配连续的8位数字 match_result = re.search(r'\d{8}', content_full) target_id = match_result.group() if match_result else "" # 执行输入 folder = driver.find_element_by_xpath("//input[@data-id='projEditFormInptCustomerReference']") folder.send_keys(target_id)
如果运行后发现内容不对,可以先打印
content_full的实际输出值,确认实际拿到的文本结构,再微调匹配规则就行。
内容的提问来源于stack exchange,提问作者prycannatik
相关产品推荐
相关产品推荐

