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

将HTTP目录列表转为DataFrame并按日期筛选及访问链接的方法咨询

解决方案:目录列表转DataFrame后仍可沿用原有访问逻辑

完全可以基于DataFrame实现原有文件访问逻辑,甚至能借助DataFrame的结构化特性让日期筛选、文件过滤更高效。以下是具体实现步骤:

1. 解析目录HTML生成目标DataFrame

首先从HTML目录中提取日期、时间、大小、链接字段,生成结构化的DataFrame:

import re
import pandas as pd
import requests
from io import StringIO

# 基础配置
url_root = "http://your-ip-address/"
auth = ("username", "password")

# 获取目录页面内容
response = requests.get(url_root + "Log/", auth=auth)
html_content = response.text

# 正则匹配目标行:捕获日期、时间、大小、HREF链接
pattern = re.compile(r'\s+(\d{2}/\d{2}/\d{2})\s+(\d{1,2}:\d{2})\s+(\d+)\s+<A HREF="([^"]+)"')
matches = pattern.findall(html_content)

# 转换为DataFrame并处理数据类型
df = pd.DataFrame(matches, columns=['日期', '时间', '大小', '链接'])
df['大小'] = df['大小'].astype(int)
df['日期'] = pd.to_datetime(df['日期'], format='%d/%m/%y')

# 提前过滤非txt文件(可选)
df = df[df['链接'].str.endswith('.txt')]

2. 基于DataFrame复用原有文件访问逻辑

生成DataFrame后,遍历筛选后的行即可沿用原有请求、解析逻辑:

files_dataframes = []
file_prefix_all = "/Log/"

# 按需求筛选文件:前缀匹配+txt后缀
filtered_df = df[(df['链接'].str.startswith(file_prefix_all)) & (df['链接'].str.endswith('.txt'))]

# 遍历访问文件
for _, row in filtered_df.iterrows():
    file_url = url_root + row['链接']
    print(f"访问文件:{file_url}")
    
    file_response = requests.get(file_url, auth=auth)
    if file_response.status_code == 200:
        file_content = file_response.content.decode('utf-8')
        # 读取制表符分隔的txt文件为DataFrame
        txt_df = pd.read_csv(StringIO(file_content), encoding='utf-8', sep='\t')
        files_dataframes.append(txt_df)

3. 利用DataFrame实现日期筛选

这是转成DataFrame后的核心优势,比如筛选2023年11月17日及以后的文件:

# 定义目标日期并筛选
target_date = pd.to_datetime("2023-11-17")
filtered_by_date = df[df['日期'] >= target_date]

# 基于日期筛选结果访问文件
for _, row in filtered_by_date.iterrows():
    # 复用上述文件访问逻辑
    pass

注意事项

  • 若目录HTML格式有变化,需调整正则表达式以匹配目标行;
  • 链接中的URL编码(如%20)无需手动解码,requests会自动处理;
  • 可根据需求给DataFrame添加额外字段(如文件名),方便后续数据溯源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:32:52