python爬虫实践: 豆瓣小组命令行客户端
主要特性
- 前一阵重新组织了一下代码, 加了命令行help信息, 用起来更方便了一些
- 初步实现了豆瓣小组及用户相关的API爬虫和请求
- 基于requests和lxml, 没有用高阶的诸如scrapy之类的爬虫工具
- 所有的命令行输出都是标准的json格式, 可以使用jq操作
安装
仅支持python3
pip3 install --upgrade dbapi
使用
两种命令模式: 客户端接口调用和豆瓣模块接口调用
# 调用客户端自身API, 比如 dbapi use <cookies> dbapi <api> [options...] # 调用豆瓣模块API, 比如 dbapi group list_user_topics dbapi <module> <api> [options...]
查看帮助信息: 可以列出所有的命令及参数
dbapi --help
用户登录: 有两种形式, 一种是直接用用户名和密码登录, 另一种是直接使用cookie, 因为没有做验证码破解, 所以在频繁登录遇到验证码之后可以通过Chrome控制台拿到cookie之后直接丢给客户端登录
# 用户名和密码登录, 注意密码是在命令行里的, 有可能会在你的历史记录里面留下密码 # 虽然这是用户模块的命令, 但是因为是全局依赖, 所以就放到客户端里面了 dbapi login <username> <password> # 使用cookie登录, 注意cookie里面关键的session id被设置了http only, 需要到network tab下面获取 dbapi use <cookies>
刷新会话信息: 检查本地保存的会话信息是否已经过期, 会话信息会默认保存到
$HOME/.__cache__dbapi.json
中dbapi flush
命令列表: 目前有用户(people)模块和小组(group)模块的命令, 具体如下:
# -------- 小组部分 --------# # 创建评论 dbapi group add_comment <topic_id> <content> <reply_id> # 创建小组 dbapi group add_group <kwargs> # 创建讨论 dbapi group add_topic <group_alias> <title> <content> # 获取讨论信息 dbapi group get_topic <topic_id> # 申请加入小组 dbapi group join_group <group_alias> <message> # 退出小组 dbapi group leave_group <group_alias> # 话题点赞 dbapi group like_topic <topic_id> # 获取评论过的话题列表 dbapi group list_commented_topics <start> # 获取评论列表 dbapi group list_comments <topic_id> <start> # 获取加入的小组列表 dbapi group list_joined_groups <user_alias> # 已加入的所有小组的话题列表 dbapi group list_joined_topics <start> # 获取点赞的话题列表 dbapi group list_liked_topics <user_alias> <start> # 获取推荐的话题列表 dbapi group list_reced_topics <user_alias> <start> # 获取小组话题列表 dbapi group list_topics <group_alias> <_type> <start> # 列出用户在话题下的所有回复 dbapi group list_user_comments <topic_id> <user_alias> # 发表的话题 dbapi group list_user_topics <start> # 推荐话题 dbapi group rec_topic <topic_id> # 删除评论 dbapi group remove_comment <topic_id> <comment_id> <reason> <other> # 删除话题下所有自己的评论 dbapi group remove_commented_topic <topic_id> # 删除小组 dbapi group remove_group <group_id> # 删除话题 dbapi group remove_topic <topic_id> # 搜索小组 dbapi group search_groups <keyword> <start> # 搜索话题 dbapi group search_topics <keyword> <sort> <start> # 喜欢话题 dbapi group undo_like_topic <topic_id> # 取消推荐话题 dbapi group undo_rec_topic <rec_id> # 更新话题 dbapi group update_topic <topic_id> <title> <content> # -------- 用户部分 --------# # 添加相册 dbapi people add_album <kwargs> # 添加相册评论 dbapi people add_album_comment <kwargs> # 添加照片 dbapi people add_photo <kwargs> # 添加照片评论 dbapi people add_photo_comment <photo_id> <content> # 添加说说 dbapi people add_status <kwargs> # 获取相册 dbapi people get_album <album_id> # 获取用户信息 dbapi people get_people <user_alias> # 获取照片 dbapi people get_photo <photo_id> # 喜欢照片 dbapi people like_photo <photo_id> # 喜欢说说 dbapi people like_status <status_id> # 获取相册列表 dbapi people list_albums <user_alias> # 获取关注用户列表 dbapi people list_contacts <user_alias> <start> # 获取照片评论列表 dbapi people list_photo_comments <photo_id> <start> # 获取照片喜欢列表 dbapi people list_photo_likes <photo_id> <start> # 获取照片推荐列表 dbapi people list_photo_recs <photo_id> <start> # 获取照片列表 dbapi people list_photos <album_id> # 获取粉丝列表 dbapi people list_rev_contacts <user_alias> <start> # 获取说说评论列表 dbapi people list_status_comments <user_alias> <start> # 获取说说列表 dbapi people list_statuses <user_alias> <start> # 推荐照片 dbapi people rec_photo <photo_id> # 删除相册 dbapi people remove_album <album_id> # 删除相册评论 dbapi people remove_album_comment <kwargs> # 删除照片 dbapi people remove_photo <photo_id> # 删除照片评论 dbapi people remove_photo_comment <comment_id> # 删除说说 dbapi people remove_status <status_id> # 取消喜欢照片 dbapi people undo_like_photo <photo_id> # 取消喜欢说说 dbapi people undo_like_status <status_id> # 取消推荐照片 dbapi people undo_rec_photo <photo_id> # 更新相册 dbapi people update_album <kwargs>
源代码
GitHub: https://github.com/acrazing/d...
相关推荐
吹云 2020-11-05
84407805 2020-11-01
曾是土木人 2020-10-31
87201442 2020-10-15
java0 2020-09-29
81437716 2020-09-18
81437716 2020-09-13
bluecarrot 2020-09-11
myCat 2020-09-09
83427718 2020-09-07
85560694 2020-09-03
89520991 2020-08-21
89550191 2020-08-09
katie000 2020-08-04
hunningtu 2020-07-30
89961330 2020-07-28
yuzhongdelei0 2020-07-28
yuzhongdelei0 2020-07-27