如何使用Beautiful Soup提取链接的最后修改日期
解决方案
既然你已经成功提取到了目标pre标签的文本内容,接下来只需要对这段文本做简单解析,就能生成你想要的键值对字典了。下面是完整的实现代码和详细说明:
完整代码示例
from bs4 import BeautifulSoup import requests # 替换为你的目标URL url = "https://example.com/your-target-path" soup = BeautifulSoup(requests.get(url).content, "html.parser") # 获取包含文件/目录信息的第二个pre标签文本 pre_content = soup.find_all("pre")[1].get_text() # 初始化结果字典 version_modified_dict = {} # 逐行处理文本内容 for line in pre_content.splitlines(): # 去除行首尾空白字符 cleaned_line = line.strip() # 跳过空行和上级目录的行(../) if not cleaned_line or cleaned_line == "../": continue # 按空格分割,最多分割3次,避免日期时间中的空格打乱分割结果 parts = cleaned_line.split(maxsplit=3) # 提取版本号:去掉末尾的斜杠 version = parts[0].rstrip("/") # 拼接日期和时间作为最后修改时间 last_modified = f"{parts[1]} {parts[2]}" # 将键值对存入字典 version_modified_dict[version] = last_modified print(version_modified_dict) # 输出示例: {'0.1.0': '21-Oct-2020 14:06'}
关键步骤说明
- 定位目标文本:第一个
pre标签是表头(Name Last modified Size),第二个pre标签才是包含版本目录和修改时间的内容,所以我们取soup.find_all("pre")[1]。 - 过滤无效行:通过
strip()去除行首尾空白,然后跳过空行和表示上级目录的../行,只处理有效版本目录行。 - 安全分割内容:使用
split(maxsplit=3)确保只把行分割成4个部分(版本目录、日期、时间、大小),这样即使日期或时间包含空格,也不会影响我们提取目标信息。 - 格式化数据:去掉版本目录末尾的斜杠
/,拼接日期和时间字符串,最终存入字典。
内容的提问来源于stack exchange,提问作者rchitect-of-info
相关产品推荐
相关产品推荐

