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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
日志服务 SLS,月写入数据量 50GB 1个月
简介: 新浪微博作为一个巨大的、实时的语料库,对微博数据爬取和分析,有重大的意义,本文就将讲述如何抓取微博数据。

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

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

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

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

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

准备工作

User-Agent池

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

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

充足的微博账号

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

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

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

充足的IP代理

如果你想很快的进行抓取,延迟为0的话,IP很快就会被封,返回403 Forbidden。这时候就需要换代理,所以需要有一个IP代理池。

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

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

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

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

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

image

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

抓取方案

首先选择一个(或多个)种子用户,作为最初抓取的对象。
对于每个抓取对象,依次抓取个人信息,所有的微博,还有粉丝列表和关注列表。
将对象的粉丝列表和关注列表中的用户,再加入到抓取对象中去。以此循环。
这样就可以形成以种子用户为核心,逐层向外扩散的爬虫辐射。

理论上,只要一小批种子用户启动,就可以爬取全网的微博!

大V的过滤

事实上,有很多微博的信息是没有营养的,比如一些恶俗的营销号,或者一些明星的微博账号。所以,我们可以给抓取的对象,加一个比较正常的阈值,也就是一个普通用户的情况:微博数量<5000,粉丝<5000,关注<5000.

Scrapy配置

MiddleWare:随机User-Agent和随机Cookie
Mongodb:网络爬虫,数据项进场会出现不全,格式不统一的状况,所以采用Mongodb较为合适
DOWNLOAD_DELAY = 0.5 下载间隔时间设置为0.5
CONCURRENT_REQUESTS = 32 并发下载量为32
LOG_FILE = weibo.log 采用日志文件记录日志

运行环境为:Python3

需要依赖包括:pymogo,scrapy

部署服务器,Run!
服务器安装Mongodb,并开放外网访问权限

这样配置以后,在本地Pycharm中,配置远端数据库,就实现可视化操作与管理。

运行爬虫

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

nohup python run.py

就已经开始不停的爬取微博了!

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

image

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

image

可以看到一分钟,可以抓取848个item(数据项),这样一天下来:

8486024=1221120 可以抓取120万的微博数据!!

而且是在服务器上运行,可以源源不断的抓取!

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

image

image

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

image

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

原文发布时间为:2018-07-08
本文来自云栖社区合作伙伴“大数据挖掘DT机器学习”,了解相关信息可以关注“大数据挖掘DT机器学习

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
169 10
|
1月前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
6天前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
2天前
|
数据采集 JSON 数据格式
Python爬虫:京东商品评论内容
京东商品评论接口为商家和消费者提供了重要工具。商家可分析评论优化产品,消费者则依赖评论做出购买决策。该接口通过HTTP请求获取评论内容、时间、点赞数等数据,支持分页和筛选好评、中评、差评。Python示例代码展示了如何调用接口并处理返回的JSON数据。应用场景包括产品优化、消费者决策辅助、市场竞争分析及舆情监测。
|
14天前
|
数据采集 供应链 API
Python爬虫与1688图片搜索API接口:深度解析与显著收益
在电子商务领域,数据是驱动业务决策的核心。阿里巴巴旗下的1688平台作为全球领先的B2B市场,提供了丰富的API接口,特别是图片搜索API(`item_search_img`),允许开发者通过上传图片搜索相似商品。本文介绍如何结合Python爬虫技术高效利用该接口,提升搜索效率和用户体验,助力企业实现自动化商品搜索、库存管理优化、竞品监控与定价策略调整等,显著提高运营效率和市场竞争力。
53 3
|
25天前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
26天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
1月前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
1月前
|
数据采集 安全 定位技术
使用代理IP爬虫时数据不完整的原因探讨
在信息化时代,互联网成为生活的重要部分。使用HTTP代理爬取数据时,可能会遇到失败情况,如代理IP失效、速度慢、目标网站策略、请求频率过高、地理位置不当、网络连接问题、代理配置错误和目标网站内容变化等。解决方法包括更换代理IP、调整请求频率、检查配置及目标网站变化。
64 11
|
2月前
|
数据采集 JSON JavaScript
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
本文介绍了如何使用PHP模拟表单提交并结合代理IP技术抓取京东商品的实时名称和价格,特别是在电商大促期间的数据采集需求。通过cURL发送POST请求,设置User-Agent和Cookie,使用代理IP绕过限制,解析返回数据,展示了完整代码示例。
如何通过PHP爬虫模拟表单提交,抓取隐藏数据