如何通过XPath与Excel的IMPORTXML获取多个电话号码?
Excel IMPORTXML 抓取全部电话号码问题解决
问题分析
你使用IMPORTXML仅能获取第一个电话号码,核心问题是原XPath定位错误:
- 最初使用的
//div[@class='_b0ke8']/a/@href中,HTML结构里根本不存在class="_b0ke8"的div节点,导致匹配到的是页面其他无关节点(仅第一个号码)。 - 后续尝试的
//bdo[@dir='ltr']路径本身能匹配所有目标节点,但需结合正确的父容器定位确保精准性。
正确解决方案
根据提供的HTML结构,以下两种方案均可获取全部三个电话号码:
1. 获取页面显示的格式化号码(如+7 701-211-89-19)
使用XPath直接定位bdo标签的文本内容:
//div[@class='49xkir']//bdo[@dir='ltr']/text()
对应的Excel公式:
=IMPORTXML(A2, "//div[@class='49xkir']//bdo[@dir='ltr']/text()")
2. 获取tel:链接中的纯号码(如+7771128919)
直接提取a标签的href属性,若需自动去除tel:前缀可嵌套函数:
- 提取带
tel:的完整链接:
//div[@class='49xkir']//a/@href
对应的Excel公式:
=IMPORTXML(A2, "//div[@class='49xkir']//a/@href")
- 自动去除
tel:前缀:
=SUBSTITUTE(IMPORTXML(A2, "//div[@class='49xkir']//a/@href"), "tel:", "")
注意事项
输入公式后,Excel会自动将所有匹配结果按垂直方向填充到下方单元格,无需手动拆分。
内容的提问来源于stack exchange,提问作者Villmark Deschanel
相关产品推荐
相关产品推荐

