Coder Social home page Coder Social logo

nextbspiders's Introduction

NextB 爬虫

基于scrapy框架的爬虫项目

准备

在使用Telegram的爬虫之前,需要获取自己telegram的api_idapi_hash

  1. 使用开发者的帐户(如电话号码)登录到Telegram帐户,登录地址:https://my.telegram.org/auth
  2. 单击API开发工具
  3. 在出现创建新应用程序窗口中,填写申请详情。不用输入任何URL,只用修改两个字段(App titleShort name
  4. 最后单击创建应用程序,生成api_idapi_hash。申请的api_idapi_hash是永久的,自己注意保密。

安装

pip install NextBSpiders

爬虫配置文件格式

{
    "api_id": "",                           // telgram的api_id,申请方式见《准备》
    "api_hash": "",                         // telgram的api_hash,申请方式见《准备》
    "session_name": "c:/xxxx/xxxx.session", // 保存telegram的登录session
    "sqlite_db_name": "C:/xxxx/xxxx.db",    // 保存telegram的sqlite数据库地址
    "proxy": {                              // 代理信息,目前测试了clash代理
        "protocal": "socks5",               // 代理协议,目前仅测试了socks5协议
        "ip": "127.0.0.1",                  // 代理地址
        "port": 7890                        // 代理端口
    },
    "group": {                              // 爬取的群组信息
        "group_id": 1575910766,             // 群组ID
        "limit": 10,                        // 单次爬取条数,建议不超过3000
        "last_message_id": -1,              // 起始消息ID,-1表示从最早一条开始爬取
        "offset_date": ""                   // 起始时间,留空表示从最早一条开始爬取,格式形如:"2020-01-01 00:00:00"
    }
}

支持的爬虫列表

爬虫名称 备注
telegramScanMessages telegram的消息爬虫

命令行工具

命令 功能 备注
nextb-telegram-run-spider 执行telegram爬虫 nextb-telegram-run-spider.exe -c .\my.json
nextb-telegram-create-table 创建telegram数据表 nextb-telegram-create-table.exe -c .\my.json
nextb-telegram-clear-dialog 清理telegram对话框 nextb-telegram-clear-dialog.exe -c .\my.json
nextb-telegram-get-dialog 获取telegram对话框 nextb-telegram-get-dialog.exe -c .\my.json
nextb-telegram-get-message 获取telegramq群组聊天消息 nextb-telegram-get-message.exe -c .\my.json
nextb-generate-user-message-csv 按用户统计每天的消息数量 nextb-generate-user-message-csv.exe -d $db_name
nextb-telegram-get-user-photo 根据用户昵称下载用户头像 nextb-telegram-get-user-photo.exe -c .\my.json -f $nick_files
nextb-statics-db 统计数据库情况 nextb-statics-db.exe -d $db_name

使用方式

  1. 按需求配置好config.json文件,此时必填项包括:api_idapi_hashsession_namesqlite_db_nameproxy代理选项根据实际网络情况填写,如果不需要代理,则proxy填空字典:"proxy": {}
  2. 初始化sqlite存储数据库:nextb-telegram-create-table -c $config.json
  3. 利用获取对话框功能,初始化telegram的登陆状态:nextb-telegram-get-dialog -c $config.json
  4. 在终端中数据登录账户(如手机号,带国家号),在telegram的app中获取登录验证码,输入到终端,完成登录,初始化登录状态数据库
  5. 从获取的群组中选择group_id,填充到配置文件中
  6. 测试消息爬取,初始化登录状态数据库中的数据:nextb-telegram-get-message -c $config.json
  7. 使用scrapy爬虫开始爬取指定群组消息并存入数据库:nextb-telegram-run-spider.exe -c $config.json

注意事项

  1. 每个telegram爬虫配置文件中的session_namesqlite_db_name需要独立使用,避免出现sqlite数据库读写暂用问题
  2. 默认执行nextb-telegram-run-spider命令时,会在当前目录创建一个scrapy.cfg文件用以保证scrapy爬虫的执行环境。不排除在某些情况下,可能需要在执行nextb-telegram-run-spider.exe -c $config.json的目录下,手动创建一个scrapy.cfg文件

scrapy.cfg

scrapy.cfg内容如下,避免执行scrapy出错

# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.io/en/latest/deploy.html

[settings]
default = NextBSpiders.settings

数据库示例

nextbspiders's People

Contributors

a232319779 avatar ddvvmmzz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

nextbspiders's Issues

代理问题

你好,Connecting to 149.154.167.51:443/TcpFull 一直TimeoutError
内地网络,然后电脑使用了HK的VPN,v2rayN Trojan类型。
浏览器可以正常登录tg,python命令nextb-telegram-get-dialog -c config.json 一直timeoutError.
谢谢

话说好像有点问题?

爬取的userid和user_name会和群组id 群组名字一样,都会统一显示群组的ID和群组的名字无法爬到是谁发言的ID和名字。
这样的话只能获取到聊天记录,无法知道是哪位用户发的记录,还是我操作问题。。
QQ截图20240615213422

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.