You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从维基百科发电厂列表的{{Location map}}模板提取指定参数?

用awk提取维基百科{{Location map}}模板参数可行吗?

绝对可以用awk来做这件事,甚至在某些场景下会比BeautifulSoup这类HTML解析器更高效——不过得看你拿到的原始数据是什么格式,咱分两种情况说:

1. 处理维基百科原始维基文本(Wikitext):awk是绝佳选择

如果你能直接获取到维基百科编辑页面里的原始维基文本(不是浏览器渲染后的HTML),那{{Location map}}模板的格式非常规整,都是键值对的形式(不管是单行还是分行写的),完全适合用awk做文本匹配提取。

举个实际的awk脚本例子,能处理单行或多行的模板:

#!/usr/bin/awk -f

BEGIN {
    RS = "{{Location map"  # 把模板开头作为记录分隔符
    FS = "[|= \n]"         # 用|、=、空格、换行作为字段分隔符
}

NR > 1 {  # 跳过第一个空记录
    printf "=== 提取到的位置信息 ===\n"
    for(i=1; i<=NF; i++){
        if($i == "label") printf "Label: %s\n", $(i+2)
        else if($i == "lat") printf "Latitude: %s\n", $(i+2)
        else if($i == "lon") printf "Longitude: %s\n", $(i+2)
        else if($i == "region") printf "Region: %s\n", $(i+2)
    }
    # 截断到模板结束符}}之前的内容
    sub(/}}.*/, "", $0)
}

把这个脚本保存为extract_locations.awk,然后运行awk -f extract_locations.awk your_wikitext_file.txt就能拿到想要的参数了。

这种方式的优势是:速度快、脚本轻量,不需要安装Python和BeautifulSoup这类依赖,完全靠文本匹配就能搞定规整的维基模板。

2. 处理渲染后的HTML页面:awk不推荐

如果你的数据源是浏览器里看到的已渲染HTML页面,那我强烈建议还是用BeautifulSoup这类专门的HTML解析器。因为HTML的结构太灵活了:标签嵌套、属性位置不固定、可能有动态加载的内容,awk的纯文本匹配很容易漏数据或者误解析,维护成本会很高。

总结

  • 优先选awk:当你能拿到维基百科的原始维基文本时,效率高、实现简单;
  • 选BeautifulSoup:当只能处理HTML时,能准确处理复杂的网页结构。

内容的提问来源于stack exchange,提问作者agmoermann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:23:31