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

如何集成多日期URL获取功能到BeautifulSoup赔率爬虫输出单一DataFrame

集成实现方案

1. 前置封装校验

把你现有的7天URL提取逻辑封装为无参数函数get_7d_match_urls(),调用后直接返回包含所有赛事页面URL的列表。单独调用该函数验证返回结果,确保URL无重复、格式符合抓取要求。

2. 改造单页抓取函数

对原有单URL爬虫函数做异常兼容,避免单个页面抓取失败中断整个流程:

import pandas as pd
from bs4 import BeautifulSoup
from selenium import webdriver

def crawl_single_page(url: str) -> pd.DataFrame:
    try:
        # 此处保留你原有的页面加载、解析、DataFrame生成逻辑不变
        return page_df
    except Exception as e:
        print(f"页面抓取失败 {url}: {str(e)}")
        # 出错时返回空DataFrame,不影响后续合并
        return pd.DataFrame()

3. 多线程批量抓取+结果合并

直接复用你原有的多线程逻辑,把URL列表作为任务输入,抓取完成后合并所有结果:

from concurrent.futures import ThreadPoolExecutor

if __name__ == "__main__":
    # 获取所有待抓取URL
    target_urls = get_7d_match_urls()
    # 线程数建议设置为3~5,避免触发站点反爬限制
    thread_num = 4
    df_collection = []

    with ThreadPoolExecutor(max_workers=thread_num) as pool:
        # 提交所有抓取任务
        for res_df in pool.map(crawl_single_page, target_urls):
            if not res_df.empty:
                df_collection.append(res_df)
    
    # 合并所有页面的抓取结果,重置行索引
    full_df = pd.concat(df_collection, ignore_index=True)
    # 可直接输出为csv或做后续处理
    full_df.to_csv("7天足球赔率数据.csv", index=False, encoding="utf-8-sig")

4. 可选优化点

  • 可以在crawl_single_page中加入随机请求延迟、动态User-Agent,降低被反爬拦截的概率
  • 复用Selenium driver实例,不要每个页面都新建driver,提升抓取效率
  • 对target_urls先做去重处理,避免重复抓取相同页面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:45:04