You need to enable JavaScript to run this app. 如何用Beautiful Soup爬取首都数据 实现终端输入国家输出对应首都
优惠活动
大模型
产品
解决方案
定价
更多

如何用Beautiful Soup爬取首都数据 实现终端输入国家输出对应首都

国家首都查询工具实现方案

实现逻辑

  • 先从目标网页的表格中提取所有国家和首都的对应关系,存储为字典方便快速查询
  • 接收用户终端输入的国家名称,匹配后输出对应首都,匹配失败给出友好提示
  • 针对中文输入需求,额外补充常用国家的中英名称映射,支持中文直接查询

完整可运行代码

import requests
from bs4 import BeautifulSoup

# 常用国家中英映射,需要支持更多国家可直接补充
country_cn_map = {
    "英国": "United Kingdom",
    "中国": "China",
    "美国": "United States",
    "法国": "France",
    "日本": "Japan",
    "韩国": "Korea, Republic of",
    "德国": "Germany",
    "俄罗斯": "Russian Federation"
}

# 网页请求与基础解析(你已完成的部分)
r = requests.get("https://geographyfieldwork.com/WorldCapitalCities.htm")
r.encoding = "utf-8"  # 强制设置编码避免内容乱码
c = r.text

soup = BeautifulSoup(c, "html.parser")
data = soup.find("table", id="anyid")
rows = data.find_all("tr")

# 构建国家-首都映射字典
capital_dict = {}
for row in rows[1:]:  # 跳过表头行不处理
    tds = row.find_all("td")
    if len(tds) < 2:
        continue
    # 去除文本前后多余的空白、换行符
    country = tds[0].get_text(strip=True)
    capital = tds[1].get_text(strip=True)
    capital_dict[country] = capital

# 终端交互查询逻辑
while True:
    input_country = input("请输入要查询的国家名称(输入q退出):").strip()
    if input_country.lower() == "q":
        print("退出查询")
        break
    # 优先匹配中文国家名,没有匹配到则直接用输入内容查询
    query_country = country_cn_map.get(input_country, input_country)
    res = capital_dict.get(query_country)
    if res:
        print(f"{input_country}的首都是:{res}")
    else:
        print(f"未找到[{input_country}]对应的首都信息,请检查输入是否正确")

补充说明

  • 原网页的国家、首都均为英文标注,因此通过country_cn_map适配中文输入需求,需要新增支持的国家直接在映射字典里添加对应关系即可
  • 加入了循环查询逻辑,不需要每次查询都重新请求网页,输入q即可退出程序
  • 增加了异常兼容逻辑,避免表格空行、用户空输入导致的程序报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 18:18:03