Python面试题更新 2026-08-05

请用 Python 实现一个定时抓取指定网页内容的脚本,说明你会如何设计调度、抓取与异常处理。

运维/技术支持编码实现风险判断方案权衡Python

考察说明

考查候选人用 Python 实现定时任务与网页抓取的综合能力,包括调度机制、请求处理、解析与健壮性。

回答思路

  1. 【回答框架 1】定时调度可选用 APScheduler 的 CronTrigger 或 IntervalTrigger,也可用系统 cron 配合脚本;若需跨平台且进程内管理,APScheduler 更灵活,cron 更轻量且不依赖常驻进程。
  2. 【回答框架 2】抓取使用 requests 或 httpx 发送 HTTP 请求,设置超时与重试;解析用 BeautifulSoup 或 lxml 提取目标内容,注意编码与动态渲染页面需改用 Selenium 或 Playwright。
  3. 【回答框架 3】脚本需处理异常:网络超时、HTTP 错误、解析失败;记录日志并可选告警;存储结果时考虑增量与去重,避免重复写入。
  4. 【回答框架 4】运行环境需考虑常驻进程的守护与重启,或使用 cron 触发;若抓取频率高,注意目标站点限流与 robots 协议,合理设置间隔。
  5. 【回答框架 5】最终方案应包含配置化(URL、频率、存储路径),便于维护;测试时用 mock 响应验证解析逻辑。
  6. 【关键点 1】调度可用 APScheduler 或 cron,cron 适合简单定时,APScheduler 支持更复杂触发。
  7. 【关键点 2】请求需设置超时与重试,解析用 BeautifulSoup 或 lxml,动态内容用 Selenium。
  8. 【关键点 3】异常处理与日志记录是脚本健壮性的关键,需覆盖网络与解析错误。
  9. 【关键点 4】存储结果需考虑去重与增量,避免重复抓取。
  10. 【关键点 5】遵守目标站点 robots 协议与限流,避免被封。
  11. 【易错点 1】不要忽略动态渲染页面,直接 requests 可能拿不到内容。
  12. 【易错点 2】定时任务若用 cron,需确保脚本环境变量与路径正确,否则可能静默失败。
  13. 【易错点 3】抓取频率过高易触发反爬,需合理设置间隔与重试策略。