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

在Google Colab中爬取世界银行项目详情遇问题,求解决方案及简便方法

在Google Colab爬取世界银行项目详情的问题解决&简便方案

一、修复Selenium启动报错问题

你之前的代码是旧版Selenium写法,新版本已弃用直接传驱动路径的方式,改用Service类配置。替换成下面的代码即可解决启动报错:

!pip install selenium
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')

# 用Service指定驱动路径,参数名从chrome_options改为options
service = Service('/usr/bin/chromedriver')
wd = webdriver.Chrome(service=service, options=chrome_options)

二、BeautifulSoup拿不到表格内容的原因

世界银行项目列表页是Angular动态渲染的,你用requests请求到的静态HTML里没有表格数据,因此BeautifulSoup无法抓取到内容。

三、更简便的方案:直接调用官方API

世界银行提供了公开的项目API,比爬虫稳定高效,无需处理动态页面。直接用requests请求就能拿到所有项目的结构化数据,示例代码:

import requests
import pandas as pd

base_url = "https://search.worldbank.org/api/v2/projects"
params = {
    "format": "json",
    "rows": 100,  # 每页最多返回100条数据
    "os": 0       # 起始偏移量,从0开始
}

all_projects = []

# 循环分页获取所有数据
while True:
    resp = requests.get(base_url, params=params)
    data = resp.json()
    project_list = data.get("projects", {}).get("project", [])
    
    if not project_list:
        break  # 没有更多数据就停止
    
    all_projects.extend(project_list)
    params["os"] += params["rows"]  # 偏移量累加,取下一页

# 转成DataFrame,方便查看和后续处理
project_df = pd.DataFrame(all_projects)
print(project_df[["project_name", "id", "countryshortname", "totalamt"]].head())

返回的JSON包含项目标题、编号、国家、总金额、项目描述等所有详情,直接提取对应字段即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:37:48