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

在Google Colab爬取clutch.io数据:BS4与Selenium遇阻求助

解决Google Colab爬取clutch.io MSP板块的问题

一、requests+BeautifulSoup4拿不到数据的解决办法

clutch.io的MSP板块内容是动态渲染的,直接用requests请求只能拿到静态HTML骨架,实际商家数据是通过JavaScript加载的,所以BS4自然提取不到目标内容。

两种解决思路:

  • 抓接口:打开浏览器F12→Network→XHR,刷新页面后找返回商家数据的接口(通常带list、data这类关键词),复制接口URL、请求头(重点带User-Agent、Referer),用requests模拟请求直接拿JSON格式数据,比解析HTML效率高。
  • 用动态渲染工具(比如Selenium),也就是你后续尝试的方案,下面重点说Colab里的正确配置。

二、Colab中Selenium的正确配置(解决Chrome二进制文件找不到的问题)

Colab默认没装Chrome浏览器,直接用ChromeDriverManager肯定找不到二进制文件,必须先安装Chromium浏览器,再指定路径:

完整可运行代码

# 1. 先安装Chromium浏览器
!apt-get update
!apt-get install -y chromium-browser

# 2. 安装依赖库
!pip install selenium webdriver-manager

# 3. 配置并启动Selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 设置Chrome选项,适配Colab环境
options = webdriver.ChromeOptions()
options.add_argument('--headless')  # 无头模式,适合无界面的Colab
options.add_argument('--no-sandbox')  # 禁用沙箱,Colab必需
options.add_argument('--disable-dev-shm-usage')  # 解决Colab内存不足导致的崩溃问题
options.binary_location = '/usr/bin/chromium-browser'  # 关键!指定Chromium的安装路径

# 初始化驱动
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

# 访问目标页面
driver.get('https://clutch.io/it-services/managed-service-providers')

# 显式等待目标元素加载完成(比sleep更可靠)
wait = WebDriverWait(driver, 15)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.company_title a')))

# 提取商家名称示例
company_names = driver.find_elements(By.CSS_SELECTOR, '.company_title a')
for name in company_names:
    print(name.text)

# 关闭驱动
driver.quit()

核心注意点

  • 必须指定options.binary_location,Colab安装的Chromium固定在/usr/bin/chromium-browser路径
  • --disable-dev-shm-usage参数不能省,Colab的临时内存分区很小,不加会导致Chrome直接崩溃
  • 用显式等待代替time.sleep(),确保数据加载完成再提取,避免空结果

三、反爬提示

clutch.io有反爬机制,频繁请求会被封IP,建议:

  • 每次请求后加随机间隔(比如time.sleep(random.randint(2,5)))
  • 每次请求更换User-Agent
  • 必要时可以给Colab配置HTTP代理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:02:35