分享

微博python爬虫,每日百万级数据

 LibraryPKU 2018-07-09


大数据挖掘DT机器学习  公众号: datayx


新浪微博绝对是一个巨大的,实时的语料库!对微博数据爬取和分析,有重大的意义。 
 
比如,现在要调查工商银行的服务态度,就可以抓取微博内容中包含工商银行的微博语料,然后做情感分析,就可以得到用户对银行服务的满意程度。

再比如,最近火热的明星鹿晗,可以抓取鹿晗的粉丝信息,分析这些粉丝处于什么年龄段,有什么标签,爱好,性别分布等等。这种对人群的分析,还可以同理应用到商业品牌上,用用户市场调研。

当然例子还有很多,那么,首先,要有微博数据!

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

http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI


准备工作

User-Agent池

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

我整理的在这里:User-Agent池

本文源码地址:

关注微信公众号datayx 然后回复“微博”即可获取。



充足的微博账号


微博爬虫,必须登录以后,才能抓取。而一直使用一个账号,是很容易被封号的!

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

至于买微博账号的地方,某宝就有: 



充足的IP代理

如果你想很快的进行抓取,延迟为0的话,IP很快就会被封,返回403 Forbidden。这时候就需要换代理,所以需要有一个IP代理池,这个具体可以参见我的另一个项目:构建爬虫代理池

http://blog./2017/10/19/spider/%E6%9E%84%E5%BB%BA%E7%88%AC%E8%99%AB%E4%BB%A3%E7%90%86%E6%B1%A0/


当然,经测试,每次访问延迟为0.5s,并发量为32,这个参数是不会被封的!


一个服务器

其实,如果IP代理,是免费抓取来的,通常质量并不好,通过代理访问延迟会很大!所以,不如不用代理,加一个0.5秒的延迟,慢慢爬。

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

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


爬虫策略

登录微博

登录一直是一个很复杂的问题,不过,我们可以通过selenium来简化这个问题。 
直接通过selenium编写浏览器的脚本,自动打开微博的手机站,点击登录,在输入框中填充账号,密码,再点击登录。最后返回cookie即可。 


获取cookie以后,可以保存到数据库中。以后每次request请求,随机从数据库中选一个cookie加上,就免登录了。


抓取方案

  1. 首先选择一个(或多个)种子用户,作为最初抓取的对象。

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多