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

如何用Python、BeautifulSoup、Pandas读取csv中URL列表实现批量爬取

解决方案

你已经引入了pandas库,直接用它读取csv文件的第一列生成URL列表即可,无需额外手写IO逻辑,修改后的完整代码如下:

import requests
import time
from bs4 import BeautifulSoup
import pandas as pd

# ---------- 替换原有手动定义urls的部分 开始 ----------
# 情况1:你的urls.csv第一列有表头,列名为url
urls = pd.read_csv("urls.csv")["url"].tolist()
# 情况2:你的urls.csv没有表头,第一行就是第一个URL,用下面这行替换上面的
# urls = pd.read_csv("urls.csv", header=None)[0].tolist()
# ---------- 替换部分结束 ----------

data = []

# 把函数定义移到循环外,避免重复定义开销
def get_drivers(url, toc, data):
    data.append({
        'url': url,
        'type': 'driver',
        'list': [x.get_text(strip=True) for x in toc.select('li:-soup-contains-own("Market drivers") li')]
    })

def get_challenges(url, toc, data):
    data.append({
        'url': url,
        'type': 'challenges',
        'list': [x.get_text(strip=True) for x in toc.select('li:-soup-contains-own("Market challenges") ul li') if
                 'Table Impact of drivers and challenges' not in x.get_text(strip=True)]
    })

# 加请求头伪装,避免被反爬拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

for url in urls:
    # 加超时避免请求卡住,加headers伪装
    page = requests.get(url, headers=headers, timeout=10)
    soup = BeautifulSoup(page.text, 'html.parser')
    toc = soup.find("div", id="toc")
    # 跳过没有toc板块的页面,避免报错
    if not toc:
        continue
    get_drivers(url, toc, data)
    get_challenges(url, toc, data)
    # 爬取间隔1秒,降低被封风险,可根据实际情况调整
    time.sleep(1)

pd.concat([pd.DataFrame(data)[['url', 'type']], pd.DataFrame(pd.DataFrame(data).list.tolist())],
          axis=1).to_csv('output.csv', encoding='utf-8-sig')

核心修改说明

  • 直接用pandas的read_csv方法读取urls.csv,通过tolist()直接生成和原来格式完全一致的URL列表,原有循环爬取逻辑不需要做任何改动
  • 补充了反爬适配、异常跳过逻辑,适配1000条URL的批量爬取场景
  • 把原本定义在循环内的函数移到全局,减少不必要的重复声明开销

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:36:04