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

基于Python+BeautifulSoup实现ABS站点Table5 Excel自动下载转DataFrame

解决方法

我们可以通过匹配链接特征的方式精准筛选Table 5的Excel下载地址,核心筛选逻辑基于ABS页面的稳定规则:

  • Table 5对应的下载链接后缀为.xlsx格式
  • 对应下载链接的文本描述一定包含Table 5关键词
  • 页面内的下载链接为相对路径,需要拼接ABS域名补全为完整可访问地址

完整可运行代码

#####Step 1: 导入所需依赖包#####
import requests
import pandas as pd
from bs4 import BeautifulSoup

#####Step 2: 请求目标页面#####
url = 'https://www.abs.gov.au/statistics/labour/earnings-and-work-hours/weekly-payroll-jobs-and-wages-australia/latest-release' 
response = requests.get(url)
# 校验请求是否成功
if response.status_code != 200:
    raise ConnectionError("页面请求失败,请检查网络或地址是否有效")

#####Step 3: 解析页面内容#####
soup = BeautifulSoup(response.text, 'html.parser') 
base_url = "https://www.abs.gov.au"
table5_download_url = None

#####Step 4: 筛选Table 5的Excel下载链接#####
for link_tag in soup.find_all('a'):
    href = link_tag.get('href')
    link_text = link_tag.get_text(strip=True)
    # 同时满足三个条件:非空链接、xlsx格式、文本包含Table 5
    if href and href.endswith('.xlsx') and 'Table 5' in link_text:
        # 补全相对路径为完整地址
        table5_download_url = href if href.startswith('http') else base_url + href
        break

if not table5_download_url:
    raise ValueError("未匹配到Table 5对应的Excel文件,请检查页面规则是否变更")

#####Step 5: 读取数据到DataFrame#####
ws = pd.read_excel(table5_download_url, sheet_name='Payroll jobs index-SA4', skiprows=5)

注意事项

如果后续ABS调整了页面规则,只需要对应修改匹配条件即可:

  • 若Table 5的命名表述变更,调整'Table 5'的匹配关键词
  • 若目标工作表名称、表头行数变更,修改pd.read_excel的对应参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:06:00