Skip to main content

基于scrapy的telegram爬虫

Project description

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

数据库示例

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

NextBSpiders-1.1.0.tar.gz (20.8 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page