如何在Power BI中调用Python爬虫生成国家所属大洲自定义列
在Power BI中通过Python脚本生成国家所属大洲列的实现步骤
1. 准备Power BI的Python依赖环境
Power BI默认Python环境通常没有requests和BeautifulSoup4,需要先安装:
- 找到Power BI使用的Python路径(通常在
C:\Program Files\Microsoft Power BI Desktop\bin\Python\python.exe,或你自定义的Python环境) - 打开命令提示符,执行安装命令:
pip install requests beautifulsoup4
2. 在Power BI中编写适配脚本生成新列
假设报表第一列列名为国家(列名不同请自行替换),操作步骤如下:
- 加载数据集到Power BI,切换到数据视图
- 点击顶部菜单栏的添加列,选择Python脚本
- 在脚本编辑器中替换默认代码为以下内容:
import requests from bs4 import BeautifulSoup import pandas as pd # 定义获取大洲的函数,适配维基百科URL格式 def get_continent(country_name): # 把国家名称的空格替换为下划线,匹配维基百科页面命名规则 formatted_country = country_name.replace(" ", "_") url = f"https://en.wikipedia.org/wiki/Geography_of_{formatted_country}" try: response = requests.get(url, timeout=10) response.raise_for_status() # 校验请求是否成功 soup = BeautifulSoup(response.content, "html.parser") # 定位大洲信息单元格 continent_element = soup.select_one("th:-soup-contains(Continent) + td") if continent_element: # 清理文本中的换行和多余空格 return continent_element.text.strip() else: return "未找到" except Exception as e: # 捕获请求失败、页面不存在等异常 return f"获取失败: {str(e)}" # 对"国家"列批量应用函数,生成新列 df['所属大洲'] = df['国家'].apply(get_continent)
- 点击确定,Power BI会执行脚本并生成
所属大洲新列
3. 关键注意事项
- 页面格式兼容:部分国家的维基百科地理页面结构可能特殊,若出现大量"未找到",需针对特定国家调整选择器逻辑
- 反爬限制:频繁请求维基百科可能触发拦截,建议先小批量测试,必要时在函数中添加
time.sleep(1)(需导入time库)控制请求间隔 - 列名匹配:确保代码中
df['国家']与数据集第一列的列名完全一致,大小写敏感
内容的提问来源于stack exchange,提问作者Kristen
相关产品推荐
相关产品推荐

