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

网站页脚防爬虫导致无法提取UBC捐赠按钮的问题咨询

问题分析与解决方案

嘿,你的问题我太熟悉了——解析器本身完全没问题,问题大概率出在网站的动态内容加载或者基础反爬策略上,咱们一步步拆解解决:

为什么本地测试正常,爬官网却不行?

  • 你本地模拟的HTML是完整的静态代码,所有菜单链接(包括捐赠按钮)都直接写在源码里;但UBC官网的页脚span7区域,很大概率是通过JavaScript动态渲染出来的。用requests.get()只能拿到页面的初始骨架,那些后续加载的内容(比如你要找的捐赠链接)根本不在返回的HTML里,BeautifulSoup自然找不到。
  • 另外,也有可能网站识别出你的请求来自爬虫(requests默认的User-Agent太容易被识破),直接返回了简化版页面,屏蔽了页脚的菜单内容。

解决办法

方法1:用浏览器自动化工具加载动态内容(最靠谱)

推荐用selenium或者playwright,它们会像真实用户打开浏览器一样执行JS,等页面完全加载后再获取源码:

from bs4 import BeautifulSoup as bs
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import re

# 初始化Chrome浏览器(记得提前装对应版本的chromedriver)
driver = webdriver.Chrome()
driver.get("https://www.ubc.ca/")

# 等待页脚的span7区域加载完成,最多等10秒
try:
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "span7"))
    )
    # 获取加载后的完整页面源码
    html = bs(driver.page_source, 'html.parser')
    # 查找捐赠相关链接
    link = html.find('a', string=re.compile('(?i)(donate|donation|gift)'))
    print(f"找到捐赠链接:{link['href']}" if link else "没找到目标链接")
finally:
    # 不管成功失败,都关闭浏览器
    driver.quit()

方法2:伪装请求头,模拟真实浏览器

如果网站只是简单检测User-Agent,给requests加个真实的浏览器请求头试试:

from bs4 import BeautifulSoup as bs
import requests
import re

# 模拟Chrome浏览器的请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}

# 带请求头发送请求
site = requests.get('https://www.ubc.ca/', headers=headers)
html = bs(site.content, 'html.parser')

# 先定位到span7的div,再找链接
footer_div = html.find('div', class_='span7')
if footer_div:
    link = footer_div.find('a', string=re.compile('(?i)(donate|donation|gift)'))
    print(f"找到链接:{link}")
else:
    print("span7区域还是空的,那基本就是动态加载的问题了")

方法3:直接找数据接口(进阶玩法)

打开浏览器开发者工具(按F12),切换到「Network」标签,刷新页面后看「XHR」或「Fetch」请求,找找页脚菜单是不是通过某个API接口加载的。如果能找到,直接请求API就能拿到结构化数据,比解析HTML高效多了。

小提醒

爬之前记得看看UBC的robots.txt,确认你爬的内容是允许的,别违反网站的使用条款;另外,用自动化工具的时候别太频繁请求,避免被封IP,可以适当加些等待时间~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:00:09