URL清洗方案咨询:批量提取网页分析数据中的标准URL
解决方案
Excel公式法(适用于标准URL路径层级固定的场景)
假设标准URL结构为 域名/一级路径/二级路径(如例子中的www.webdomain.co.uk/section/pagename),可使用以下公式提取标准URL(假设URL在A1单元格):
=TEXTJOIN("/",TRUE,INDEX(TEXTSPLIT(A1,"/"),SEQUENCE(3)))
- 原理:先按
/拆分URL为列表,取前3个元素(域名、一级路径、二级路径),再用/拼接成标准URL。无论原URL后带多少额外路径或查询参数,都能精准提取目标部分。 - 注意:如果你的标准URL路径层级不是3级(比如是4级),只需把公式中的
3改成对应层级数即可。
如果需要先清除?及后面的查询参数,再提取标准URL,可嵌套公式:
=TEXTJOIN("/",TRUE,INDEX(TEXTSPLIT(TEXTBEFORE(A1,"?"),"/"),SEQUENCE(3)))
Power Query法(适用于批量处理大量数据)
- 选中包含URL的数据区域,点击「数据」选项卡 →「自表格/区域」,将数据导入Power Query编辑器。
- 在「添加列」选项卡点击「自定义列」,输入以下公式(根据实际层级调整
3):
= Text.Combine(List.FirstN(Text.Split(Text.BeforeDelimiter([URL], "?"), "/"), 3), "/")
- 点击「确定」后,删除原URL列,点击「关闭并上载」,处理后的数据会导入新工作表。
VBA宏法(适用于重复批量处理场景)
按Alt+F11打开VBA编辑器,插入新模块,粘贴以下代码:
Sub CleanTrackedURLs() Dim targetRange As Range Dim cell As Range Dim urlSegments As Variant Dim cleanURL As String Set targetRange = Application.InputBox("请选择包含URL的单元格区域", Type:=8) For Each cell In targetRange If cell.Value <> "" Then ' 移除?及后续查询参数 cell.Value = Split(cell.Value, "?")(0) ' 按/拆分URL urlSegments = Split(cell.Value, "/") ' 取前3段拼接成标准URL(按需调整层级数) If UBound(urlSegments) >= 2 Then cleanURL = urlSegments(0) & "/" & urlSegments(1) & "/" & urlSegments(2) cell.Value = cleanURL End If End If Next cell End Sub
- 使用方法:回到Excel,按
Alt+F8选择CleanTrackedURLs宏,选择目标区域即可批量处理。
内容的提问来源于stack exchange,提问作者jw_data
相关产品推荐
相关产品推荐

