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...]
  1. 查看帮助信息: 可以列出所有的命令及参数

    dbapi --help
  2. 用户登录: 有两种形式, 一种是直接用用户名和密码登录, 另一种是直接使用cookie, 因为没有做验证码破解, 所以在频繁登录遇到验证码之后可以通过Chrome控制台拿到cookie之后直接丢给客户端登录

    # 用户名和密码登录, 注意密码是在命令行里的, 有可能会在你的历史记录里面留下密码
    # 虽然这是用户模块的命令, 但是因为是全局依赖, 所以就放到客户端里面了
    dbapi login <username> <password>
    
    # 使用cookie登录, 注意cookie里面关键的session id被设置了http only, 需要到network tab下面获取
    dbapi use <cookies>
  3. 刷新会话信息: 检查本地保存的会话信息是否已经过期, 会话信息会默认保存到$HOME/.__cache__dbapi.json

    dbapi flush
  4. 命令列表: 目前有用户(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...

相关推荐