如何在Python Selenium中提取响应里的id与code独立值(可借助正则)
用Python Selenium提取id和code值的两种方法
假设你已经通过Selenium获取到了目标字符串(比如从页面元素、网络响应中拿到id=51555263943&code=q15cd225s6s8这类内容),下面是两种提取id和code独立字符串的方案:
方法一:用urllib.parse解析(推荐,无需正则)
这种方法专门针对URL查询参数格式的字符串,简单可靠:
from urllib.parse import parse_qs # 替换成你从Selenium获取到的实际字符串 target_str = "id=51555263943&code=q15cd225s6s8" # 解析为字典,键对应参数名,值是参数值的列表 parsed_data = parse_qs(target_str) # 提取id和code的值(取列表第一个元素) id_val = parsed_data["id"][0] code_val = parsed_data["code"][0] # 验证结果 print(id_val) # 输出:51555263943 print(code_val) # 输出:q15cd225s6s8
方法二:用正则表达式提取
如果必须用正则,这里提供现成的表达式,直接套用即可:
import re # 替换成你从Selenium获取到的实际字符串 target_str = "id=51555263943&code=q15cd225s6s8" # 匹配id值:捕获'id='后到'&'前的所有字符 id_match = re.search(r'id=([^&]+)', target_str) id_val = id_match.group(1) if id_match else "" # 匹配code值:捕获'code='后到字符串结尾的所有字符 code_match = re.search(r'code=([^&]+)', target_str) code_val = code_match.group(1) if code_match else "" # 验证结果 print(id_val) # 输出:51555263943 print(code_val) # 输出:q15cd225s6s8
补充:Selenium获取目标字符串的常见场景
- 从页面元素提取:如果字符串是页面某个元素的文本,用元素定位获取:
from selenium.webdriver.common.by import By target_str = driver.find_element(By.XPATH, "//元素的XPath路径").text - 从网络响应提取:如果字符串是接口响应体,可通过Chrome DevTools协议捕获网络日志,再提取响应内容(需根据实际请求URL过滤):
import json from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.set_capability('goog:loggingPrefs', {'performance': 'ALL'}) driver = webdriver.Chrome(options=chrome_options) driver.get("你的目标页面URL") # 遍历网络日志找目标请求 for log in driver.get_log('performance'): msg = json.loads(log['message'])['message'] if 'Network.responseReceived' in msg['method']: resp_url = msg['params']['response']['url'] if '目标请求的特征关键词' in resp_url: # 获取响应体 resp_body = driver.execute_cdp_command('Network.getResponseBody', {'requestId': msg['params']['requestId']}) target_str = resp_body['body'] break driver.quit()
内容的提问来源于stack exchange,提问作者CatChMeIfUCan
相关产品推荐
相关产品推荐

