有没有人确定一种很好的方法来抓取HTML响应,主要使用HTML5和非XML兼容格式,使用Apigee网关获取特定值。
也就是说,如果我得到以下的回复,
<input name="a" value="a1">
<input name="b" value="b1">
<input name="c" value="c1">
<input name="d" value="d1">
我可以返回a和b的值吗?
由于这是html而不是XML Strict,Apigee的XPATH不起作用。
或者,是否有推荐的方法允许在网关上进行DOM解析?
答案 0 :(得分:1)
尝试基于您的偏好的java或javascript或py策略中的正则表达式。您可以将整个响应有效内容分配给变量作为字符串。然后,您可以执行字符串操作(如正则表达式匹配)以提取HTML文本的特定部分。
对于XML响应有效负载,您可以使用XSLT和XPATH表达式。
答案 1 :(得分:1)
您可以使用NodeJs路由在网关上执行此操作。由于Apigee Edge支持开箱即用的NodeJ,因此您可以使用NPM来玩DOM。我个人最喜欢的是Cheerio [https://github.com/cheeriojs/cheerio]。 BTW Cheerio也基于JQuery
var cheerio = require('cheerio'),
$ = cheerio.load('<h2 class="title">Hello world</h2>');
$('h2.title').text('Hello there!');
$('h2').addClass('welcome');
$.html();
//=> <h2 class="title welcome">Hello there!</h2>