本文为项目XWang20/WeiboCrawler的文档。
项目说明
本项目参考了dataabc/weibo-crawler和nghuyong/WeiboSpider,感谢他们的开源。
项目介绍
新浪微博是国内主要的社交舆论平台,对社交媒体中的数据进行采集是舆论分析的重要方法之一。
本采集工具无需cookie,可以连续爬取一个或多个新浪微博用户信息、用户微博及其微博评论转发。
采集实例
抓取用户信息 抓取用户微博 抓取微博转发 抓取微博评论
使用方法
拉取项目
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
自定义选项
-
采集id和时间范围等信息可根据自己实际需要重写
./WeiboCrawler/spiders/*.py
中的start_requests
函数。 - 默认输出到数据库中,若需要输出json或csv文件:在命令后加入
-o *.json
或-o *.csv
,例如:scrapy crawl user -o user.csv
-
添加账号cookie:可在settings.py中添加默认头,或在start_request函数中添加。
-
默认下载延迟为3,可在settings.py修改DOWNLOAD_DELAY。
- 暂停并恢复爬行:详见 作业:暂停并恢复爬行 — 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池
- 填写middlewares.py中的
fetch_proxy
函数。 - 在settings.py文件中将以下代码取消注释:
# Enable or disable downloader middlewares # See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html DOWNLOADER_MIDDLEWARES = { 'WeiboCrawler.middlewares.IPProxyMiddleware': 100, }
- 在settings.py文件中将DOWNLOAD_DELAY设置为0。
DOWNLOAD_DELAY = 0
- 填写middlewares.py中的
字段说明
用户信息
- _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
PREVIOUS2020, 书影音记录