PROJECT | 微博数据采集项目

本文为项目XWang20/WeiboCrawler的文档。

项目说明

本项目参考了dataabc/weibo-crawlernghuyong/WeiboSpider,感谢他们的开源。

项目介绍

新浪微博是国内主要的社交舆论平台,对社交媒体中的数据进行采集是舆论分析的重要方法之一。

本采集工具无需cookie,可以连续爬取一个或多个新浪微博用户信息、用户微博及其微博评论转发。

采集实例

抓取用户信息 user 抓取用户微博 mblog 抓取微博转发 Repost 抓取微博评论 Comment

使用方法

拉取项目

git clone https://github.com/XWang20/WeiboCrawler.git

安装依赖

本项目Python版本为Python3.8

cd WeiboCrawler
python -m pip install -r requirements.txt

安装数据库(可选)

默认使用MongoDB数据库,可在settings.py中修改URL和数据库名,默认为localhost、weibo。

运行程序

基本程序

抓取用户信息

scrapy crawl user

抓取用户微博

scrapy crawl mblog

抓取微博转发

scrapy crawl repost

抓取微博评论

scrapy crawl comment

自定义选项

  1. 采集id和时间范围等信息可根据自己实际需要重写./WeiboCrawler/spiders/*.py中的start_requests函数。

  2. 默认输出到数据库中,若需要输出json或csv文件:在命令后加入-o *.json-o *.csv,例如:
    scrapy crawl user -o user.csv
    
  3. 添加账号cookie:可在settings.py中添加默认头,或在start_request函数中添加。

  4. 默认下载延迟为3,可在settings.py修改DOWNLOAD_DELAY。

  5. 暂停并恢复爬行:详见 作业:暂停并恢复爬行 — Scrapy 文档

无cookie版限制的说明

  • 单用户微博最多采集200页,每页最多10条
  • 单微博评论最多采集两页,约20条
  • 单微博转发采集无限制 以上限制都可以通过添加账号cookie解决。

设置多线程和代理ip

  • 多线程: 在settings.py文件中将以下代码取消注释:
    # Configure maximum concurrent requests performed by Scrapy (default: 16)
    CONCURRENT_REQUESTS = 100
    # The download delay setting will honor only one of:
    CONCURRENT_REQUESTS_PER_DOMAIN = 100
    CONCURRENT_REQUESTS_PER_IP = 100
    
  • 代理ip池
    1. 填写middlewares.py中的fetch_proxy函数。
    2. settings.py文件中将以下代码取消注释:
      # Enable or disable downloader middlewares
      # See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html
      DOWNLOADER_MIDDLEWARES = {
        'WeiboCrawler.middlewares.IPProxyMiddleware': 100,
      }
      
    3. settings.py文件中将DOWNLOAD_DELAY设置为0。
      DOWNLOAD_DELAY = 0
      

字段说明

用户信息

  • _id: 用户ID
  • nick_name: 昵称
  • gender: 性别
  • brief_introduction: 简介
  • mblogs_num: 微博数
  • follows_num: 关注数
  • fans_num: 粉丝数
  • vip_level: 会员等级
  • authentication: 认证
  • person_url: 首页链接

微博信息

  • _id: 微博id
  • bid: 微博bid
  • weibo_url: 微博URL
  • created_at: 微博发表时间
  • like_num: 点赞数
  • repost_num: 转发数
  • comment_num: 评论数
  • content: 微博内容
  • user_id: 发表该微博用户的id
  • tool: 发布微博的工具

转发信息

  • _id: 转发id
  • repost_user_id: 转发用户的id
  • content: 转发的内容
  • mblog_id: 转发的微博的id
  • created_at: 转发时间
  • source: 转发工具

评论信息

  • _id: 评论id
  • comment_user_id: 评论用户的id
  • content: 评论的内容
  • mblog_id: 评论的微博的id
  • created_at: 评论发表时间
  • like_num: 点赞数
  • root_comment_id: 根评论id,只有二级评论有该项

写在最后

如需交流,欢迎联系:wangxing@xtopia.fun 首页封面插画:Natal Rock Python