如何提取整理AWS区域/AZ及CloudFront边缘节点数据为结构化表格
AWS全球基础设施页面提取问题
1. 缺失美国东部(北弗吉尼亚)区域条目的原因和修复方法
- 原因:美国东部(北弗吉尼亚)是AWS最早上线的核心区域,官网页面将其放在首屏单独的介绍模块中,该模块的父容器class不是
lb-rtxt,你原先限定父容器为lb-rtxt的XPath自然覆盖不到该条目。 - 修复方法:放弃按父容器筛选,直接通过文本特征匹配所有目标节点,不会漏过特殊排版的条目,基础提取公式如下:
=IMPORTXML("https://aws.amazon.com/about-aws/global-infrastructure/regions_az/","//p[contains(text(),'(Region)') or contains(text(),'AZs:') or contains(text(),'Launched ')]")
2. 过滤冗余文本的方法
不需要先全量提取再过滤,上面的带文本特征匹配的XPath已经可以直接返回三类目标内容,分别为(Region)后缀的区域名称行、AZs:开头的可用区行、Launched 开头的上线年份行。
提取后得到的是按区域顺序排列的单列三元组数据,每3行对应一个区域的三类信息,用以下公式可直接转成三列表格:=WRAPROWS(上面的IMPORTXML公式,3)
如果使用的Google Sheets版本不支持WRAPROWS,可以用INDEX+OFFSET组合按行偏移取值实现同样效果。
CloudFront功能页面边缘节点数据提取问题
你之前的XPath选错了节点,返回的内容是页面里描述网络特性的第一个p标签,三类边缘节点数据在同模块另一个包含对应关键词的p标签中,按以下步骤操作即可:
- 先提取包含三类数据的完整文本节点:
=IMPORTXML("https://aws.amazon.com/cloudfront/features/?p=ugi&l=na&whats-new-cloudfront.sort-by=item.additionalFields.postDateTime&whats-new-cloudfront.sort-order=desc","//p[contains(text(),'Edge locations') and contains(text(),'Regional Edge Caches')]/text()") - 拆分生成独立三列,可直接用单步数组公式实现:
=ARRAYFORMULA(TRIM(SPLIT(REGEXREPLACE(第一步提取的文本,"Edge locations: |AWS Local Zones: |Regional Edge Caches: ",""),";")))
如果需要把每个城市条目拆成单独行,在对应列的公式外层套TRANSPOSE(SPLIT(对应列内容,","))即可。
内容的提问来源于stack exchange,提问作者stack91
相关产品推荐
相关产品推荐

