爬虫方案设计(三)
爬虫方案设计(三)
仅供个人交流学习使用,禁止转载,严禁商用!!!任何商业用途与本人无关!
本篇的任务是爬取上篇获得的视频底下的评论。
爬取目标:
主要是针对不同的错误进行处理,把不能处理的错误存储在日志中,尽量保证程序发生错误保证不会意外停止,同时爬取速度不会过快,还不会发生遗漏。
一般出现的错误:
- 412代码,访问拦截(尝试多次仍然失败,记录到日志)
- 接口返回错误代码:12002,信息:评论区已关闭。(记录并跳过)
- “连接api:443失败”(重新尝试)
- 'NoneType' object is not iterable
- 未知的奇奇怪怪的错误。。。
流程图如下:
graph TD
start(开始)
start --> videos[设置视频id列表]
videos --> video[取视频id] --> j{视频id是否为空?}
main[连接当天的数据库] --> visit[访问评论查询接口, 默认page_index=1]
visit --> j2{结果空?}--yes-->video
j2 --no--> j3{评论总数>10000?}--yes-->video
j3 --no--> j4{获取的结果是否等于评论总数?} --no--> wait[等待2s] -->visit
j4 --yes--> wait1[等待15s] -->com[取评论] --> j5{评论为空?} --no--> visit1[访问子评论查询接口]
visit1 --error--> pass[跳过] --> clear
visit1 --success--> wait2[等待1s] -->com
j5-->yes--> clear[评论去重] --> save[保存所有评论数据到当天的数据库]
j --no--> main
j --yes--> e(结束)
save --success--> delay[等待15s]
save --error--> j1{ServerDisconnectedError且是第1次出现?}
j1 --yes--> delay1[等待30s] --> main
j1 --no--> record[记录错误信息在日志] --> video
delay --> video
数据结构(省略了大部分我不关心的关键词)
关键词 | 说明 |
---|---|
rpid | 评论id |
oid | 对应视频id |
mid | 评论对应用户 |
parent | 父亲评论id |
ctime | 评论时间 |
处理策略
- 去重,清理重复数据
- 清洗缺失值,异常数据
- 统计用户数量
- 统计每个用户评论数目,筛选掉评论数目少于100的用户
数据集
截至2021.06.03
视频总共430,277,筛选出了24,268个视频,还有很多数据待筛选
评论总共659,196,待筛选
每天进步一点点!
©版权声明
文章版权归作者所有,未经允许请勿转载。