目的
记录 Blackboard 公开匿名访客会话的使用方式,并汇总当前公开站点抓取结果。重点是获取可检索的新闻、通知、课程作业、实验和参考材料;登录壳页、重复页面和无内容导航页不进入正文索引。
Blackboard 端点与作业获取
课程 ID、content ID 和资源 ID 会变化,下面以课程 _297_1 为例。
1. 建立匿名访客会话
GET https://www.bb.ustc.edu.cn/webapps/login?action=guest_login&new_loc=%2Fwebapps%2Fblackboard%2Fexecute%2Flauncher%3Ftype%3DCourse%26id%3D_297_1
使用同一个 HTTP 客户端跟随跳转并保存 cookie;不提交用户名或密码。
2. 打开课程资源目录
GET https://www.bb.ustc.edu.cn/webapps/blackboard/content/listContent.jsp?content_id=_12953_1&course_id=_297_1&mode=reset
目录 HTML 中的 /bbcswebdav/pid-.../xid-... 是资源入口。继续使用同一访客会话请求它,通常会跳转到实际文件:
/bbcswebdav/pid-12961-dt-content-rid-50846_1/xid-50846_1
-> /courses/ESB5316/Week2-Labwork-1.ppt
抓取器会保存请求 URL、最终 URL、状态、MIME、文件名、大小、SHA-256、本地路径和来源页面,并标记 access_mode=guest_session。直接返回 401/403 或登录表单的资源标记为 auth_required,不绕过权限。
已验证的资源包括:
- 课程 297「GPU并行计算和CUDA程序开发及优化」的实验 PPT、CUDA 参考材料和课程 PPT;
- 课程 584「国际金融(英)」的 Homework、Exercise、Answer Key 等 DOCX/PPTX。
当前抓取快照
统计日期:2026-08-22。
- 130 个官方来源,248,284 个已抓取页面;
- 17,838 个页面识别为新闻详情页,其中 17,836 个达到内容索引阈值;
- 按页面发布时间统计,近一年新闻详情页 3,180 个;
- 结构化文章 111,738 条,其中 104,524 条有发布时间;
- 已保存 73,413 条图片记录和 174 个公开文档附件;
- 页面评分分布:
full_index 48,429、metadata_and_assets 28,061、audit_only 10,754、not_indexed 161,040。
抓取仍可断点续跑,当前 frontier 还有 60,603 个待处理 URL;其中图书馆、Blackboard 和部分院系站点占比较高。因此这些数字是当前快照,不代表全站已经完成。
本地结构化数据
data/crawler.sqlite:sources、frontier、pages、links、articles、media、assets、失败记录和评分字段;
data/pages/:原始 HTML;
data/articles/:文章 JSON 与正文 HTML;
data/media/:按 SHA-256 去重的图片;
data/assets/:PDF、Office 等课程附件;
data/exports/articles.jsonl:文章导出;
data/exports/source-report.json:每个来源的新闻数量、近一年活跃度和待抓数量。
文章记录包含标题、作者、发布时间、更新时间、栏目、摘要、正文 HTML/纯文本/Markdown、JSON-LD、来源 URL 和图片关联;页面记录包含 page_kind、access_mode、value_score、value_tier、评分原因和重复关系。
本地查看
在 crawler/ 目录启动只读展示服务:
uv run ustc-crawler serve --db data/crawler.sqlite --data-dir data
默认地址为 http://127.0.0.1:8765/,提供概览、新闻检索、文章详情、来源统计和 Blackboard 附件列表;同时提供对应的 JSON API。
边界
只抓取官方来源的公开 HTTP(S) 内容;Blackboard 只使用公开匿名 guest_login 会话。不提交凭据,不绕过登录、验证码、403 或其他权限控制;开源软件镜像不纳入本项目。
目的
记录 Blackboard 公开匿名访客会话的使用方式,并汇总当前公开站点抓取结果。重点是获取可检索的新闻、通知、课程作业、实验和参考材料;登录壳页、重复页面和无内容导航页不进入正文索引。
Blackboard 端点与作业获取
课程 ID、content ID 和资源 ID 会变化,下面以课程
_297_1为例。1. 建立匿名访客会话
使用同一个 HTTP 客户端跟随跳转并保存 cookie;不提交用户名或密码。
2. 打开课程资源目录
目录 HTML 中的
/bbcswebdav/pid-.../xid-...是资源入口。继续使用同一访客会话请求它,通常会跳转到实际文件:抓取器会保存请求 URL、最终 URL、状态、MIME、文件名、大小、SHA-256、本地路径和来源页面,并标记
access_mode=guest_session。直接返回 401/403 或登录表单的资源标记为auth_required,不绕过权限。已验证的资源包括:
当前抓取快照
统计日期:2026-08-22。
full_index48,429、metadata_and_assets28,061、audit_only10,754、not_indexed161,040。抓取仍可断点续跑,当前 frontier 还有 60,603 个待处理 URL;其中图书馆、Blackboard 和部分院系站点占比较高。因此这些数字是当前快照,不代表全站已经完成。
本地结构化数据
data/crawler.sqlite:sources、frontier、pages、links、articles、media、assets、失败记录和评分字段;data/pages/:原始 HTML;data/articles/:文章 JSON 与正文 HTML;data/media/:按 SHA-256 去重的图片;data/assets/:PDF、Office 等课程附件;data/exports/articles.jsonl:文章导出;data/exports/source-report.json:每个来源的新闻数量、近一年活跃度和待抓数量。文章记录包含标题、作者、发布时间、更新时间、栏目、摘要、正文 HTML/纯文本/Markdown、JSON-LD、来源 URL 和图片关联;页面记录包含
page_kind、access_mode、value_score、value_tier、评分原因和重复关系。本地查看
在
crawler/目录启动只读展示服务:默认地址为
http://127.0.0.1:8765/,提供概览、新闻检索、文章详情、来源统计和 Blackboard 附件列表;同时提供对应的 JSON API。边界
只抓取官方来源的公开 HTTP(S) 内容;Blackboard 只使用公开匿名
guest_login会话。不提交凭据,不绕过登录、验证码、403 或其他权限控制;开源软件镜像不纳入本项目。