python爬虫实践: 豆瓣小组命令行

发布时间:2019-09-26 07:19:14编辑:auto阅读(1923)

    主要特性

    • 前一阵重新组织了一下代码, 加了命令行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...

关键字