微博python爬虫,日百万数据量

大侠一枝花 2022-11-22 0

新浪微博绝对是一个庞大的实时语料库!对微博数据进行爬取和分析具有重要意义。

例如,如果要调查工商银行的服务态度,可以抓取微博内容中包含工商银行的微博语料,然后做情感分析,得到用户对银行服务的满意度。

再比如最近当红的明星鹿晗,可以抓取鹿晗的粉丝信息,分析这些粉丝的年龄段、标签、爱好、性别分布等。这种对人群的分析也可以用同样的方式应用到商业品牌上,利用用户市场研究。

当然,这样的例子还有很多,所以,首先要有微博数据!

因此,产生了很多微博爬虫项目。后来新浪微博也开放了微博的API接口,但是官方的东西还是有很多限制。

准备

用户代理池

爬微博,这么大的项目,必要的充分的伪装是必要的,所以需要一个User-Agent pool,每次随机选择一个User-Agent。

我在这里整理了一下:User-Agent Pool

足够的微博帐号

微博爬虫需要登录后才能爬取。但是如果一直用一个账号的话,很容易被封号!

所以需要多准备几个账号,每次随机选择一个账号登录爬取。(实际上是随机选择一个)。

至于在哪里买微博号,某宝有:

足够的 IP 代理

如果想快速爬取,如果延迟为0,很快就会封IP,返回403。这时候就需要换代理,所以需要有IP代理池。

当然,经过测试,每次访问延迟0.5s,并发32微博粉丝爬虫,这个参数不会被阻塞!

服务器

事实上,如果免费获取IP代理,通常质量并不好,通过代理访问的延迟会非常大!所以最好不要用代理,加个0.5秒的延迟,慢慢爬。

这时候就需要一个吃苦耐劳的爬虫,24小时不间断的爬取数据!

所以当然要部署在服务器上了!

爬虫策略

登录微博

登录一直是一个很复杂的问题,然而,我们可以把这个问题简单化。

直接通过编写浏览器脚本,自动打开微博手机站,点击登录,在输入框中填写账号和密码,点击登录。最后才回来。

image

采集后,可以保存在数据库中。每次请求后,从数据库中随机选择一个添加,免登录。

爬取方案

首先,选择一个(或多个)种子用户作为初始捕获对象。

对于每个爬取对象,依次抓取个人信息、所有微博、粉丝列表和关注列表。

将对象的粉丝列表和关注列表中的用户添加到捕获的对象中。如此循环。

这样就可以形成以种子用户为核心,逐层向外扩散的爬虫辐射。

理论上只要一小部分种子用户开始,就可以抓取全网微博!

大V过滤

事实上,有很多微博信息是没有营养的,比如一些低俗的营销号,或者一些明星微博号。因此,我们可以给抓取的对象加上一个比较正常的阈值,也就是普通用户的情况:微博条数

配置

:随机用户代理和随机

: 对于网络爬虫来说,进入市场时数据项会不完整,格式也不统一,所以使用比较合适

= 0.5 下载间隔设置为0.5

= 32 并发下载为 32

= weibo.log 使用日志文件来记录日志

运行环境为:

要求包括:

部署服务器,运行!

服务器安装,并访问外网

完成此配置后微博粉丝爬虫,在本地配置远程数据库,实现可视化运维管理。

运行爬虫

将代码克隆到服务器,安装依赖,执行

nohup 运行.py

已经开始马不停蹄的刷微博了!

通过命令查看最新日志:tail -10 weibo.log。

image

在日志中,查看抓取速度:

可以看到一分钟可以抓取848项(数据项),所以一天内:

= 可抓取120万条微博数据!!

并且运行在服务器上,可以不断爬取!

同时通过可视化工具在本地连接并查看数据库。

image

image

通过简单的计数统计,抓取数量:

image

可以看到,目前已经抓取了1.8k的用户信息,2.7w的微博语料,8.2w的分析关系信息。

原发布时间为:2018-07-08

本文来自云栖社区伙伴《大数据挖掘DT机器学习》,相关资料可关注《大数据挖掘DT机器学习》