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

如何使用Python提取InsideAirbnb指定年月的全部数据文件信息

解决代码

你原有代码的核心问题是日期转换函数逻辑写反,且没有处理日期列标注为N/A的行匹配逻辑,我们可以通过下载链接中自带的日期字段匹配这部分数据,完整修改后代码如下:

import requests
import re
from bs4 import BeautifulSoup
from datetime import datetime


DATASET_URL = "http://insideairbnb.com/get-the-data.html"
DATASET_CITY = "Antwerp"
# 目标是2021年8月,所以修改为08.2021
DATASET_MONTHYEAR = "08.2021"

# 将页面格式的日期「27 August, 2021」转换为匹配用的「08.2021」格式
def date_str_to_monthyear(date_str):
    if date_str == 'N/A':
        return None
    dt = datetime.strptime(date_str, '%d %B, %Y')
    return dt.strftime('%m.%Y')

# 从下载链接中提取日期信息,同时返回匹配用的年月格式 + 显示用的完整日期格式
def get_date_from_url(url):
    date_pat = re.search(r'/(\d{4}-\d{2}-\d{2})/', url)
    if not date_pat:
        return None, None
    date_obj = datetime.strptime(date_pat.group(1), '%Y-%m-%d')
    return date_obj.strftime('%m.%Y'), date_obj.strftime('%d %B, %Y')

# 请求页面解析
r = requests.get(DATASET_URL)
soup = BeautifulSoup(r.content, "html.parser")

# 定位城市对应表格
city_table = soup.find(class_=DATASET_CITY.lower())
result_list = []

# 遍历表格所有行
for row in city_table.select('tbody tr'):
    tds = row.find_all('td')
    if len(tds) < 4:
        continue
    # 提取各字段原始内容
    date_col_text = tds[0].get_text(strip=True)
    file_link = tds[2].find('a')
    download_url = file_link['href']
    file_name = file_link.get_text(strip=True)
    file_desc = tds[3].get_text(strip=True)

    # 匹配目标年月
    if date_col_text != 'N/A':
        cur_monthyear = date_str_to_monthyear(date_col_text)
        show_date = date_col_text
    else:
        cur_monthyear, show_date = get_date_from_url(download_url)
    
    if cur_monthyear == DATASET_MONTHYEAR:
        result_list.append([download_url, file_name, file_desc, show_date])

# 输出结果
print(result_list)

逻辑说明

  • 日期列有明确日期的行,直接将日期转换为mm.yyyy格式和目标匹配即可
  • 日期列为N/A的行,从下载链接中提取内置的yyyy-mm-dd格式日期,转换后匹配目标年月
  • 所有匹配成功的行统一使用该月的完整日期作为返回的「对应日期」字段,符合你要求的输出格式
  • 运行后result_list就是你需要的列表结构,包含2021年8月的全部7条数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:06:01