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

如何实现从URL列表循环抓取HTML并提取归档数据?

批量遍历URL列表执行水文数据提取的解决方案

核心思路

把你已有的单日期提取逻辑封装成可复用的函数,然后循环遍历URL列表逐个调用函数处理,同时做好异常捕获和CSV数据的追加写入,避免单个任务失败导致整个流程中断。

具体实现步骤

1. 封装单页面提取逻辑为函数

假设你原有的代码是Python实现,将单URL处理逻辑封装成函数,示例如下:

import requests
from bs4 import BeautifulSoup
import csv

def extract_and_save(url, csv_path):
    # 替换成你实际的页面请求与解析代码
    resp = requests.get(url)
    soup = BeautifulSoup(resp.text, "html.parser")
    
    # 提取水温、流量、日期等字段(替换为你实际的选择器逻辑)
    date = soup.select_one(".archive-date").text.strip()
    water_temp = soup.select_one(".water-temp-value").text.strip()
    discharge = soup.select_one(".flow-value").text.strip()
    
    # 追加写入CSV
    with open(csv_path, "a", newline="", encoding="utf-8") as f:
        writer = csv.writer(f)
        writer.writerow([date, water_temp, discharge])

2. 循环遍历URL列表执行批量处理

假设你的目标URL列表已存储在target_urls变量中,直接通过for循环遍历执行:

# 已生成的2017-11-01至2023-10-26的归档URL列表
target_urls = [
    "https://your-domain.com/archive/20171101",
    "https://your-domain.com/archive/20171102",
    # ... 剩余URL
]

# 目标CSV文件路径
output_csv = "hydrology_total_data.csv"

# 先写入CSV表头(仅执行一次)
with open(output_csv, "w", newline="", encoding="utf-8") as f:
    csv.writer(f).writerow(["日期", "水温", "流量"])

# 批量处理每个URL
for index, url in enumerate(target_urls, 1):
    print(f"正在处理第{index}条数据:{url}")
    try:
        extract_and_save(url, output_csv)
    except Exception as e:
        # 捕获异常并记录,避免循环中断
        print(f"处理失败:{url} - {str(e)}")
        with open("error_log.txt", "a", encoding="utf-8") as log:
            log.write(f"{url}: {str(e)}\n")

3. 关键注意事项

  • CSV写入模式:用"a"追加模式写入数据,表头单独用"w"模式初始化,避免每次覆盖已有数据。
  • 异常处理:网络请求、页面结构变动都可能导致报错,通过try-except捕获异常,同时记录错误URL和原因,方便后续补爬。
  • 反爬规避:如果目标网站有频率限制,可在每次请求后添加time.sleep(1)之类的延迟,避免被封禁IP。
  • 数据去重:如果URL列表存在重复项,可先通过list(set(target_urls))去重,或者在写入时判断当前日期数据是否已存在。

其他语言适配思路

如果你的代码不是Python,核心逻辑一致:

  1. 将单页面提取逻辑封装为可调用的方法/函数。
  2. 遍历URL数组,逐个调用方法。
  3. 处理好输出文件的追加写入和异常捕获。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:43:20