如何从Rest API返回的HTML响应中提取your_data对应值
从HTML响应中提取your_data对应值的方法
下面提供几种实用的提取方式,根据你使用的编程语言选择即可:
方法一:正则表达式匹配
直接通过正则定位your_data对应的字符串值,适合格式固定的场景:
import re # 替换为你的HTML响应内容 html_response = """<!doctype html> <html lang="en-US"> <head> </head> <body> <ul id="mastmenu" class="primary-menu clearfix"><li id="menu-item-1149" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-1149"><a href="https://www.example.com/">Home</a></li> <li id="menu-item-1200" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1200"><a href="https://www.example.com/services-2/">Services</a></li> <li id="menu-item-1129" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-1129"><a href="#">Who We Are<span class="main-menu-toggle"></span></a> <ul class="sub-menu"> <li id="menu-item-1144" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1144"><a href="https://www.example.com/about-us/">About Us</a></li> <li id="menu-item-1153" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1153"><a href="https://www.example.com/our-team/">Our Team</a></li> <li id="menu-item-1159" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1159"><a href="https://www.example.com/careers/">Careers</a></li> </ul> </li> /* <![CDATA[ */ var adc_ajax = {"ajaxurl":"https://www.example.com/opi/hjj-ajax.php","your_data":"ko2bop447a3"}; /* ]]> */ </body> </html>""" match = re.search(r'"your_data":"([^"]+)"', html_response) if match: your_data_value = match.group(1) print(your_data_value) # 输出:ko2bop447a3
方法二:解析HTML后提取脚本并转为JSON
这种方法更健壮,能应对脚本格式小幅度变化的情况,以Python的BeautifulSoup为例:
from bs4 import BeautifulSoup import json import re # 替换为你的HTML响应内容 html_response = """上面的HTML内容""" soup = BeautifulSoup(html_response, 'html.parser') # 遍历所有脚本标签,找到包含adc_ajax的内容 for script in soup.find_all('script'): if script.string and 'adc_ajax' in script.string: # 提取JSON对象部分 json_match = re.search(r'var adc_ajax = ({.*?});', script.string) if json_match: adc_ajax_data = json.loads(json_match.group(1)) your_data_value = adc_ajax_data.get('your_data') print(your_data_value) # 输出:ko2bop447a3 break
方法三:JavaScript/Node.js环境下提取
如果在Node.js环境,可使用cheerio库解析HTML:
const cheerio = require('cheerio'); // 替换为你的HTML响应内容 const html = `上面的HTML内容`; const $ = cheerio.load(html); // 定位包含adc_ajax的脚本 const targetScript = $('script').filter((_, el) => /adc_ajax/.test($(el).text())).text(); // 提取并解析JSON const jsonMatch = targetScript.match(/var adc_ajax = ({.*?});/); if (jsonMatch) { const adcAjax = JSON.parse(jsonMatch[1]); console.log(adcAjax.your_data); // 输出:ko2bop447a3 }
内容的提问来源于stack exchange,提问作者imbra
相关产品推荐
相关产品推荐

