先给结论:可判定的输出不是让学员“描述一下怎么采集”,而是要求提交一份能被第三方按固定规则检查是否正确的产物,例如一份可导入的采集规则文件、一段指定字段的CSV,或一份带失败原因说明的抓取日志。判断标准是:换一个人拿着你的题面,能否在不问你任何问题的情况下判对错。
很多火车头采集器教程在出练习题时,会把需求写得非常完整:采集某类列表页、提取标题和正文、翻页、去重、导出。学员也认真交了作业,但判题的人一看就犯难——有人交了截图,有人交了文字步骤,有人交了一段伪代码,还有人只写“按教程配置即可”。这些答案看起来都做了题,却没有一个共同的可比对象。
问题通常不在学员,而在题目把“操作过程”当成了输出。过程无法直接判定,只有产物可以。把文章知识转成实操题,关键动作是先把输出物定义清楚,再倒推题目要考哪几个知识点。
适合学员已经能独立打开软件、完成基础配置的场景。题面直接规定:提交一个规则文件,或一份字段固定的CSV,字段名、字段顺序、编码方式都写死。判题时只需导入或打开文件,逐项核对。
适合考察排错思路、正则理解或翻页逻辑的场景。题面给出一个已经写好但有缺陷的规则,让学员指出问题所在,并说明修改方向。
两种做法并不互斥。更稳妥的方式是同一道题分两段:第一段交产物,第二段交一份不超过若干条的说明,解释产物中某个字段为什么这样取。产物负责可判定,说明负责看思路。
当学员的答案被判错时,常有两种解释:一是题目本身没把输出定义清楚,二是学员确实没掌握对应知识点。区分它们的证据是复现性。
把同一份题面交给另一个具备同等基础的人,如果他也交出了格式不同但内容正确的产物,说明题目的输出定义不够硬,属于出题问题;如果他交出的产物同样在某个字段上出错,且错误位置一致,说明这个知识点确实是共同薄弱点,属于教学问题。
另一个可用的证据是错误类型。格式类错误(列名不统一、编码不一致)通常指向题面约定不足;内容类错误(取错节点、翻页断在第二页)通常指向知识点未掌握。把这两类错误分开统计,比笼统看正确率更能指导下一次出题。
假设某节教程讲的是列表页加详情页的两级采集。出题时可以这样写:请提交一份CSV,包含三列,列名依次为title、url、content,编码为UTF-8;同时提交一份说明,写清列表页翻页是在哪一步设置的。
判题时先打开CSV核对列名和编码,再随机抽三行检查content是否只含正文。如果列名对但content混入推荐阅读,说明提取范围没掌握;如果列名不对,说明题面约定没被遵守,此时应先确认题面是否把列名写死在显眼位置,再决定是否扣分。这个动作的结果会直接影响下一步:若多数人错在列名,下次出题就把字段约定单独列成一行;若多数人错在正文范围,下次就补一个提取范围的专项练习。
做完这三步,题目就从“看你有没有做过”变成“看你交出的东西对不对”,判题成本下降,学员也能从具体错误位置知道下一步该补哪个知识点。