Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

This is a sina weibo spider built by scrapy [微博爬虫/持续维护]

License

Notifications You must be signed in to change notification settings

hprof/WeiboSpider-1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

27 Commits

Repository files navigation

WeiboSpider

GitHub stars GitHub issues GitHub license

English Version Readme

这可能是全网最强的微博爬虫项目![持续维护中]

项目说明

版本说明

该项目分为2个分支,以满足不同的需要

分支 特点 抓取量
simple 单账号,单IP,单机器 十万级
master 账号池,IP池,Docker分布式 数亿级(理论无上限)

支持爬虫

  • 用户信息抓取
  • 用户微博抓取
  • 用户社交关系抓取(粉丝/关注)
  • 微博评论抓取
  • 基于关键词和时间段的微博抓取

字段说明

项目基于weibo.cn站点抓取,抓取的字段非常丰富。具体请移步:数据字段说明

如何使用

拉取镜像

docker pull portainer/portainer
docker pull mongo
docker pull mongo-express
docker pull redis
docker pull registry.cn-hangzhou.aliyuncs.com/weibospider/account
docker pull registry.cn-hangzhou.aliyuncs.com/weibospider/spider

启动项目

docker stack deploy -c <(docker-compose config) weibospider
docker service ls 
-----------------
ID NAME MODE REPLICAS IMAGE PORTS
f7yx1cjh1izt weibospider_portainer replicated 1/1 portainer/portainer:latest *:7000->9000/tcp
5szekv996su0 weibospider_mongodb replicated 1/1 mongo:latest *:7001->27017/tcp
lq7kmlekcrlg weibospider_mongo-express replicated 1/1 mongo-express:latest *:7002->8081/tcp
xjbddlf53hai weibospider_redis replicated 1/1 redis:latest *:7003->6379/tcp
mk8dmh6nl17i weibospider_account replicated 1/1 registry.cn-hangzhou.aliyuncs.com/weibospider/account:latest
nvo9dt0r5v2t weibospider_weibo-spider-comment replicated 1/1 registry.cn-hangzhou.aliyuncs.com/weibospider/spider:latest
vbnyacpm3xle weibospider_weibo-spider-fan replicated 1/1 registry.cn-hangzhou.aliyuncs.com/weibospider/spider:latest
qyvu9wt0fzny weibospider_weibo-spider-follow replicated 1/1 registry.cn-hangzhou.aliyuncs.com/weibospider/spider:latest
h3dfh8qr1eak weibospider_weibo-spider-tweet replicated 1/1 registry.cn-hangzhou.aliyuncs.com/weibospider/spider:latest
jiaz176hzbls weibospider_weibo-spider-user replicated 1/1 registry.cn-hangzhou.aliyuncs.com/weibospider/spider:latest

通过portainer可以方便得对所有的服务进行管理,查看服务状态,运行日志。

通过scale可快速进行服务的启动(置为1),停止(置为0),扩容(比如,置为100)

protainer

通过mongo-express可以方便得查看管理mongo数据库

mongo-express

构建账号池

准备无验证码类型的微博小号, 免验证码的微博小号购买渠道在此讨论

将购买的小号填充到./weibospider/account/account.txt,格式与./weibospider/account/account_sample.txt保持一致。

获取容器id,并进入容器

docker container ls | grep weibospider_account
1f15415443f8 registry.cn-hangzhou.aliyuncs.com/weibospider/account:latest "python3" 22 minutes ago Up 22 minutes weibospider_account.1.h091uc5sm0l1iz9oxpa7ypwak
docker exec -it 1f15415443f8 bash
root@1f15415443f8:/app#

构建账号池

root@1f15415443f8:/app# cd account
root@1f15415443f8:/app# python login.py
2020年04月15日 11:56:56 ==============================
2020年04月15日 11:56:56 start fetching cookie [zhanyuanben85c@163.com]
2020年04月15日 11:57:04 cookie: _T_WM=0bfd51e7d3bdc1f914c5dbce3a4b20e0; SSOLoginState=1586923020; SUHB=010GS1NzSA-zOR; SCF=AmfAT-ydYBWL_ip0UMdV5KYFRwiWaFNTPoxWBgCc76c8PHXBkcp-CSNZArDRyyt1oShEm-T4Qukkw9W9n5eGrXA.; SUB=_2A25zkvZcDeRhGeFN71AY9i7FyzuIHXVRfJoUrDV6PUJbkdANLXjTkW1NQDAS-yKGeo_seRGTTKVAeOs1IG_ucher
2020年04月15日 11:57:04 ==============================
2020年04月15日 11:57:04 start fetching cookie [chuicong7188031104@163.com]
2020年04月15日 11:57:11 cookie: _T_WM=6cf59fb4e2df7ba2b15e93d6bc184940; SSOLoginState=1586923028; SUHB=06ZV1_UTgTUirk; SCF=AvGBrUc4rNRZapeLXnQjOvrK9SyaN8dtGH_JfZamRkCRwCC6H1NJmJ6EVdZG26_lwfURJ233mRb5G-ZiM3WgGWA.; SUB=_2A25zkvZEDeRhGeFN71ET9S_Fzj6IHXVRfJoMrDV6PUJbkdANLRahkW1NQDAPyyhLB1NH_XSKtFoOQ2xwxkKWEMh5
2020年04月15日 11:57:11 ==============================
2020年04月15日 11:57:11 start fetching cookie [zhi21614055@163.com]
2020年04月15日 11:57:19 cookie: _T_WM=6cc104aff523785aed114eb28996cb84; SSOLoginState=1586923035; SUHB=0bts1yfOjc42hI; SCF=AtAdd0uPAxdek8Hhh6JBOkxqFANmv7EqVebH6aHdY-3T_LUHoaIp6TaCo_57zCFZ-izJVcs01qs20b5cBpuwS_c.; SUB=_2A25zkvZLDeRhGeFN71AY9CjLwjuIHXVRfJoDrDV6PUJbkdANLWXjkW1NQDAJWlhRm6NkHCqHoOG9PBE1DOsaqX39

如果无法购买无验证码的小号也可以直接通过网页获取cookie, 修改insert_cookie函数的参数.

# 手工逐个添加构建
root@1f15415443f8:/app# python db_utils.py

添加代理IP

请重写fetch_proxy方法,该方法需要返回一个代理ip

初始化Redis

root@be3ac5910132:/app# python redis_init.py <arg>

参数arg可选项为:

  • user: 初始化用户信息爬虫队列,对应weibospider_weibo-spider-userdocker服务
  • fan: 初始化用户粉丝列表爬虫队列,对应weibospider_weibo-spider-fandocker服务
  • follow: 初始化用户关注列表爬虫队列,对应weibospider_weibo-spider-followdocker服务
  • comment: 初始化微博评论爬虫队列,对应weibospider_weibo-spider-commentdocker服务
  • tweet_by_user_id: 初始化用户微博爬虫队列,对应weibospider_weibo-spider-tweetdocker服务
  • tweet_by_keyword: 初始化基于关键词和时间端的微博爬虫队列,对应weibospider_weibo-spider-tweetdocker服务

可根据自己的需求自行修改./weibospider/redis_init.py

下面以tweet_by_user_id为例

root@be3ac5910132:/app# python redis_init.py tweet_by_user_id
Add urls to tweet_spider:start_urls
Added: https://weibo.cn/1087770692/profile?page=1
Added: https://weibo.cn/1699432410/profile?page=1
Added: https://weibo.cn/1266321801/profile?page=1

爬虫运行

爬虫程序使用会监测redis中是否有待抓取的URL,当redis初始化完毕爬虫就会自动运行了

spider

在mongo-express中也可以看到实时抓取的数据

spider

速度说明

分布式爬虫的最终速度和账号池的大小,IP代理的质量数量,服务器的带宽,服务器的性能(IO/内存/CPU)均有关系

下面是我测试的一组速度,供参考:

配置项 配置值
账号池大小 1000+
IP池大小 50+
CONCURRENT_REQUESTS 16
DOWNLOAD_DELAY 0.1s
DOWNLOAD_TIMEOUT 3
爬虫容器个数 100
服务器带宽 30M
服务器内存 256GB
服务器CPU E5-2650 v4 @ 2.20GHz * 48

经过测算,每个容器,每分钟网页抓取量:300+,一天抓取的网页为:

300(pages/(container*min)) * 100(containers) * 60*24(mins/day) = 43,200,000(pages/day) 4.3千万网页

如果抓取用户数据,1(data/page) ,则一天的数据抓取量为

43,200,000(pages/day) * 1(data/page) = 43,200,000(data/day) 4.3千万数据

如果抓取微博/评论/社交关系数据,10(data/page) ,则一天的数据抓取量为

43,200,000(pages/day) * 10(data/page) = 432,000,000(data/day) 4.3亿数据

写在最后

基于该项目已经构建千万级别的微博活跃用户数据集,以及海量的微博舆情数据集,现已公开weibo-public-opinion-datasets

如果您在使用该项目中有任何问题,均可以开issue进行讨论

如果您在社交媒体计算/舆情分析等领域上有好的idea,欢迎一起交流合作: nghuyong@163.com

About

This is a sina weibo spider built by scrapy [微博爬虫/持续维护]

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.3%
  • Dockerfile 1.7%

AltStyle によって変換されたページ (->オリジナル) /