Selenium Chromedriver设备型号提取与列表比对技术咨询
解决设备型号提取与列表比对问题
嘿,我看到你在用Selenium做自动化时遇到了两个小问题:从冗余的设备类型文本里提取G930型号,还有把提取结果和列表做比对。这俩问题都有很直接的解决办法,我来给你一步步讲:
一、从device_type中提取G930
你给出的示例文本是(Samsung SM-G930F Fekete - BLACK ),里面的G930是很有规律的——跟着SM-前缀,是G开头加三位数字的格式。这种固定模式的内容提取,用正则表达式最方便:
首先要导入Python的re模块,然后用re.search()精准匹配我们要的部分:
import re # 先获取device_type的文本内容 device_type = driver.find_element(By.XPATH, '//*[@id="adatok_table"]/tbody/tr[8]/td[2]').get_attribute("textContent") # 用正则匹配"SM-"后面的G+三位数字 match = re.search(r'SM-(G\d{3})', device_type) if match: # 从捕获组里拿到我们要的*G930* extracted_model = match.group(1) else: # 处理文本格式不符合预期的情况 extracted_model = None print("没找到符合格式的设备型号哦")
这里的正则r'SM-(G\d{3})'可以拆解成:
SM-:匹配固定的前缀字符串(G\d{3}):一个捕获组,专门抓字母G后面跟着3个数字的部分,也就是我们要的G930型号
二、和目标列表做比对
拿到提取后的extracted_model,用Python自带的in运算符就能快速判断它是否在你的目标列表里:
# 假设这是你要比对的目标型号列表 target_models = ["G930", "G950", "G960", "G975"] # 先确保我们成功提取到了型号,再做比对 if extracted_model: if extracted_model in target_models: print(f"太棒了!型号 {extracted_model} 在目标列表里") # 这里可以加匹配成功后的操作,比如写入文件或者执行下一步自动化 else: print(f"型号 {extracted_model} 不在目标列表中") # 处理未匹配的逻辑,比如记录日志或者跳过当前设备 else: print("没法比对啦,因为没提取到有效型号")
如果担心文本大小写问题(比如万一拿到的是g930),可以统一转成大写再比对:
# 统一转成大写后比对 if extracted_model.upper() in [m.upper() for m in target_models]: # 匹配逻辑 pass
额外小建议
如果后续遇到device_type的格式有变化(比如前缀不是SM-),可以灵活调整正则。比如不管前缀是什么,只想抓所有G开头加三位数字的内容,正则可以改成r'G\d{3}',然后用match.group()获取结果就行。
内容的提问来源于stack exchange,提问作者Exitl0l
相关产品推荐
相关产品推荐

