我如果POWER BI要爬這個網頁資料,因為112代表年分 11代表月份
但當我想要爬出110-112年 並且1-12月的資料出來
並且進行合併我該如何做
我如果POWER BI要爬這個網頁資料,因為112代表年分 11代表月份
但當我想要爬出110-112年 並且1-12月的資料出來
並且進行合併我該如何做
引自免费微信小程序:皆我百晓生
在Power BI中直接爬取网页数据并不支持动态参数,因此你需要先使用Python或其他编程语言(例如Python)来抓取不同日期范围的数据,然后将这些数据导入到Power BI进行分析。这里是一个基本的步骤指南和Python代码示例来实现这个目标。
首先,确保你已经安装了必要的库,包括requests
和BeautifulSoup
。如果没有安装,可以使用以下命令安装:
pip install requests beautifulsoup4 pandas
接下来,编写一个Python脚本来抓取每个月的数据,并保存为CSV文件,然后再将这些CSV文件导入到Power BI进行合并分析。这是一个简单的Python脚本示例:
import requests
from bs4 import BeautifulSoup
import csv
import pandas as pd
import os
# 年份列表
years = [2010, 2011, 2012]
# 月份列表
months = range(1, 13)
# 创建一个空列表来存储所有数据
all_data = []
for year in years:
for month in months:
url = f"https://mops.twse.com.tw/nas/t21/sii/t21sc03_{year:04d}_{month:02d}_0.html"
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table', attrs={'class': 'table_list'})
rows = table.tbody.find_all('tr')
# 处理表头
headers = [th.text.strip() for th in rows[0].find_all('th')]
for row in rows[1:]:
data = [td.text.strip() for td in row.find_all('td')]
all_data.append(data)
else:
print(f"Failed to fetch data from {url}")
# 将数据转换为Pandas DataFrame并保存为CSV
df = pd.DataFrame(all_data, columns=headers)
df.to_csv("twse_data.csv", index=False)
print("Data extraction completed.")
这段代码会创建一个名为twse_data.csv
的CSV文件,包含指定年份和月份的所有数据。然后,你可以在Power BI中使用“获取数据”功能,选择“从文件”->“从CSV”,找到这个CSV文件,然后按照提示进行数据加载和合并。
如果你希望在Power BI中直接处理这个CSV文件,可以使用Power Query(也称为“查询编辑器”)。在Power BI Desktop中,点击“主页”选项卡,然后选择“新建查询” -> “从文件” -> “从文本/CSV”。之后,根据向导指示操作,Power BI会自动识别和整理CSV中的数据。
注意:由于网页结构可能会变化,这段代码可能需要根据实际页面布局进行调整。此外,网站可能有反爬虫机制,频繁请求可能会导致IP被封禁。在大规模抓取时,建议添加适当的延迟,或者使用更专业的网络抓取工具,比如Scrapy。