python爬蟲實踐: 豆瓣小組命令行客戶端

主要特性

  • 前一陣從新組織了一下代碼, 加了命令行help信息, 用起來更方便了一些
  • 初步實現了豆瓣小組及用戶相關的API爬蟲和請求
  • 基於requests和lxml, 沒有用高階的諸如scrapy之類的爬蟲工具
  • 全部的命令行輸出都是標準的json格式, 可使用jq操做

安裝

僅支持python3python

pip3 install --upgrade dbapi

使用

兩種命令模式: 客戶端接口調用和豆瓣模塊接口調用git

# 調用客戶端自身API, 好比 dbapi use <cookies>
dbapi <api> [options...]

# 調用豆瓣模塊API, 好比 dbapi group list_user_topics
dbapi <module> <api> [options...]
  1. 查看幫助信息: 能夠列出全部的命令及參數github

    dbapi --help
  2. 用戶登陸: 有兩種形式, 一種是直接用用戶名和密碼登陸, 另外一種是直接使用cookie, 由於沒有作驗證碼破解, 因此在頻繁登陸遇到驗證碼以後能夠經過Chrome控制檯拿到cookie以後直接丟給客戶端登陸json

    # 用戶名和密碼登陸, 注意密碼是在命令行裏的, 有可能會在你的歷史記錄裏面留下密碼
    # 雖然這是用戶模塊的命令, 可是由於是全局依賴, 因此就放到客戶端裏面了
    dbapi login <username> <password>
    
    # 使用cookie登陸, 注意cookie裏面關鍵的session id被設置了http only, 須要到network tab下面獲取
    dbapi use <cookies>
  3. 刷新會話信息: 檢查本地保存的會話信息是否已通過期, 會話信息會默認保存到$HOME/.__cache__dbapi.jsonapi

    dbapi flush
  4. 命令列表: 目前有用戶(people)模塊和小組(group)模塊的命令, 具體以下:bash

    # -------- 小組部分 --------#
    # 建立評論
    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...cookie

相關文章
相關標籤/搜索