MediaCrawler icon indicating copy to clipboard operation
MediaCrawler copied to clipboard

feat: 支持爬取小红书二级评论

Open leantli opened this issue 1 year ago • 5 comments

关注到 #121 #215 等存在不少需要爬取二级评论的需求 不过如果全部评论都爬取, 会导致可爬取帖子数量骤降(可能直接基于请求量做了风控检测....) 但是也存在用户不需要爬取大量帖子, 但需要全部评论的情况....因此单独加了二级评论爬取的开关, 进行了实现 有一个比较尴尬的地方是 db 这一层, 二级评论的结构和一级评论没有多大的差距, 但是有个比较关键的 target_commet_id 感觉不可或缺, 如果要复用 xhs_note_comment 表, 可能导致不兼容之前的版本, 这里先单独弄个表, 看看大佬的思路和建议

leantli avatar Apr 11 '24 09:04 leantli

小红书的二级评论之前实现过,是直接放到get_note_all_comments函数中的,做一个参数配置fetch_all_comment 我觉得要实现的话,就在原来的get_note_all_comments是加一个参数就好了,然后数据库也用同一张表,加一个parent_commnet_id就可以了,我印象中,子评论的信息中应该有个标识它属于那个comment_id,你觉得呢?

NanmiCoder avatar Apr 11 '24 15:04 NanmiCoder

如果小红书的要实现的话,也要考虑其他平台的二级评论,不能光做一个,不然显得尴尬,比如这个用户主页视频采集,本来我是不想merge到主干的,保持MediaCrawler的精简,反正架子都有了,后面太多人问了,就mergen进去了,但是mergeg之后发现没有太多的时间去维护其他平台的主页视频开发

NanmiCoder avatar Apr 11 '24 15:04 NanmiCoder

小红书的二级评论之前实现过,是直接放到get_note_all_comments函数中的,做一个参数配置fetch_all_comment 我觉得要实现的话,就在原来的get_note_all_comments是加一个参数就好了,然后数据库也用同一张表,加一个parent_commnet_id就可以了,我印象中,子评论的信息中应该有个标识它属于那个comment_id,你觉得呢?

可以的,这样实现方便很多,不过当时的疑虑就是有人已经在用 db, 此时更新版本的话,就得通知下更新版本的人要启用爬二级评论时更新 db 字段

leantli avatar Apr 11 '24 15:04 leantli

如果小红书的要实现的话,也要考虑其他平台的二级评论,不能光做一个,不然显得尴尬,比如这个用户主页视频采集,本来我是不想merge到主干的,保持MediaCrawler的精简,反正架子都有了,后面太多人问了,就mergen进去了,但是mergeg之后发现没有太多的时间去维护其他平台的主页视频开发

是打算实现的,不过可能得分段实现,最近上班比较赶,先实现下小红书的,后面几天再实现其他平台的,晚些冲一波

leantli avatar Apr 11 '24 15:04 leantli

小红书的二级评论之前实现过,是直接放到get_note_all_comments函数中的,做一个参数配置fetch_all_comment 我觉得要实现的话,就在原来的get_note_all_comments是加一个参数就好了,然后数据库也用同一张表,加一个parent_commnet_id就可以了,我印象中,子评论的信息中应该有个标识它属于那个comment_id,你觉得呢?

可以的,这样实现方便很多,不过当时的疑虑就是有人已经在用 db, 此时更新版本的话,就得通知下更新版本的人要启用爬二级评论时更新 db 字段

在db schema 中把添加字段的ddl语句放到git中去管理,然后在开启子评论的选项上加一定说明就行了,保持schema的最新版本。

NanmiCoder avatar Apr 11 '24 15:04 NanmiCoder

thanks

NanmiCoder avatar Apr 12 '24 17:04 NanmiCoder