我正在尝试解析HTML以检索我的Google Apps脚本代码上的标记的值。包含属性中的换行符,并且出现多次,但是我只想要第一个值。 (在这种情况下,只需要'foo'。)
<b class="
"
>
foo
</b><b class="
"
>
var
</b>
在Google Apps脚本上,“ getElementByTagName”之类的功能不可用。因此,尽管我首先使用了regexp,但这不是明智的选择。 有人对我如何前进有想法吗?任何评论/猜测将不胜感激!
答案 0 :(得分:4)
将XmlService用于您的情况如何解决?在XmlService,即使标记中有多个换行符,也可以检索该值。我认为针对您的情况有几种解决方法。因此,请将此视为其中之一。
示例脚本的流程如下。
var html = '<b class="\n"\n>\nfoo\n</b><b class="\n"\n>\nvar\n</b>\n'; // Your sample value
var xml = '<?xml version="1.0"?><sampleContents>' + html + '</sampleContents>';
var res = XmlService.parse(xml).getRootElement().getChildren()[0].getText().trim();
Logger.log(res) // foo
如果这不是您想要的,请告诉我。我想修改它。
不幸的是,对于从URL检索的值,不能使用上述脚本。因此,我使用了“解析器”,它是针对您情况的GAS库。示例脚本如下。
var url = "https://www.booking.com/searchresults.ja.html?ss=kyoto&checkin_year=2018&checkin_month=10&checkin_monthday=1&checkout_year=2018&checkout_month=10&checkout_monthday=2&no_rooms=1&group_adults=1&group_children=0";
var html = UrlFetchApp.fetch(url).getContentText();
var res = Parser.data(html).from("<b class=\"\n\"\n>").to("</b>").build().trim();
Logger.log(res) // US$11
M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUV
对于您注释中的第二个URL,该URL似乎与第一个URL不同。而且您的新URL也没有标签<b class=\"\n\"\n>
。这样,就无法检索您想要的值。但是从您评论中的第一个URL,我推测出您想要的值。请确认以下脚本?
var url = "https://www.booking.com/searchresults.ja.html?ss=kyotogranvia&checkin_year=2018&checkin_month=10&checkin_monthday=1&checkout_year=2018&checkout_month=10&checkout_monthday=2&no_rooms=1&group_adults=1&group_children=0";
var html = UrlFetchApp.fetch(url).getContentText();
var res = Parser.data(html).from("<span class=\"lp-postcard-avg-price-value\">").to("</span>").build().trim();
Logger.log(res) // US$289