新浪微博爬虫最新分享

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 前言: 更新完《QQ空间爬虫分享(2016年11月18日更新)》(http://blog.csdn.net/bone_ace/article/details/53213779) 现在将新浪微博爬虫的代码也更新一下吧。

前言:

更新完《QQ空间爬虫分享(2016年11月18日更新)》(http://blog.csdn.net/bone_ace/article/details/53213779)

现在将新浪微博爬虫的代码也更新一下吧。

这次主要对爬虫的种子队列和去重策略作了优化,并更新了Cookie池的维护,只需拷贝代码即可实现爬虫分布式扩展,适合大规模抓取。
使用说明:

  1. 需要安装的软件:Python2、Redis、MongoDB; 需要安装的Python模块:scrapy、requests、lxml。
  2. 进入cookies.py,填入你的微博账号(已有两个账号示例)。
  3. 进入settings.py,如果你填入的账号足够多,可以将DOWNLOAD_DELAY = 10CONCURRENT_REQUESTS = 1注释掉。另外可以修改存放种子和去重队列的机器,可以存放在两台不同的机器上面。
  4. 运行launch.py启动爬虫,也可在命令行执行scrapy crawl SinaSpider(Linux只能采用后者)。
  5. 分布式扩展:将代码拷贝到一台新机器上,运行即可。注意各子爬虫要共用一个去重队列,即将settings.py里面的FILTER_HOST设成同一台机的IP。

代码说明:

  1. 爬虫基于scrapy+redis架构进行开发、优化。
  2. 爬虫支持断点续爬。
  3. 非常简易地,便可实现分布式扩展。
  4. 使用Redis的“位”进行去重,1G的内存可满足80亿个用户ID的瞬间去重。
  5. 将种子优化到不足40个字符,大大降低了Redis的内存消耗,也提高了各子爬虫从Redis取种子的速度。
  6. 维护了一个Cookie池,各子机器共用一个Cookie池,断点续爬不会重复获取Cookie,当某个Cookie失效时会自动更新。

注:本项目用代码提交请求进行登录,不会遇到验证码。但是有个情况:如果一次性获取几十个Cookie,新浪会检测到你的IP异常(大约多久会被检测出来?以前是一分钟左右,现在好像几十秒,我们就用这几十秒登陆完所有账号,放心 代码登录很快的),大约十个小时后会给你的IP恢复正常。IP被检测为异常会怎样?不会影响爬虫的抓取,只是你再登录账号时会被要求输入验证码,日志如[Sina_spider3.cookies] WARNING: Failed!( Reason:为了您的帐号安全,请输入验证码 )
如果我的账号还没登录完就出现这种情况怎么办?可以先将爬虫停了,机器换个IP继续获取Cookie,放心 已获取到Cookie的账号会自动跳过。当然如果你不喜欢受这个限制,可以用打码平台或着自己写个程序把验证码搞定。其实只是第一次启动爬虫才是需要获取那么多Cookie,之后只有等哪个Cookie失效了才会去更新。

数据说明:

用户发表的微博:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
_id : 用户ID-微博ID


ID : 用户ID


PubTime : 发表时间


Content : 微博内容


Tools : 发表工具/平台


Co_oridinates : 定位坐标


Like : 点赞数


Transfer : 转载数


Comment : 评论数

用户的个人信息:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

_id: 用户ID

NickName: 昵称



Gender: 性别



Province: 所在省



City: 所在城市



Birthday: 生日



BriefIntroduction: 简介



Num_Fans: 粉丝数



Num_Tweets: 微博数



Num_Follows: 关注数



VIPlevel: 会员等级



SexOrientation: 性取向



Sentiment: 感情状况



URL: 首页链接



Authentication: 认证
 

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy


原文发布时间为:2016-12-06
本文作者:九茶
本文来自云栖社区合作伙伴“Python中文社区”,了解相关信息可以关注“Python中文社区”微信公众号
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
数据采集 Python
新浪微博小爬虫
一直琢磨着写个爬虫玩,上学期都没实行,于是花了大概一天写了这个东西。其实半天就把程序调试好了,可是在往mysql数据库里保存数据的时候出了问题。 python的中文编码实在是非常麻烦,不光如此,因为有些用户的简介里有一些特殊符号,®或者笑脸之类的,于是在这里纠结了很久,好歹最后是成功了(其实也就是过...
3019 0
|
数据采集 Python
python3 asyncio异步新浪微博爬虫WeiboSpider
使用python 异步io开发的新浪微博爬虫,基于aiohttp。
3863 0
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
|
2月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
63 4
|
2月前
|
数据采集 存储 API
在信息时代,Python爬虫用于自动化网络数据采集,提高效率。
【7月更文挑战第5天】在信息时代,Python爬虫用于自动化网络数据采集,提高效率。基本概念包括发送HTTP请求、解析HTML、存储数据及异常处理。常用库有requests(发送请求)和BeautifulSoup(解析HTML)。基本流程:导入库,发送GET请求,解析网页提取数据,存储结果,并处理异常。应用案例涉及抓取新闻、商品信息等。
78 2
|
8天前
|
数据采集 机器学习/深度学习 搜索推荐
Python爬虫技术基础与应用场景详解
本文介绍了爬虫技术的基本概念、原理及应用场景,包括数据收集、价格监测、竞品分析和搜索引擎优化等。通过一个实战案例展示了如何使用Python爬取电商网站的商品信息。强调了在使用爬虫技术时需遵守法律法规和道德规范,确保数据抓取的合法性和合规性。
|
2月前
|
数据采集 存储 Java
如何让Python爬虫在遇到异常时继续运行
构建健壮Python爬虫涉及异常处理、代理IP和多线程。通过try/except捕获异常,保证程序在遇到问题时能继续运行。使用代理IP(如亿牛云)防止被目标网站封锁,多线程提升抓取效率。示例代码展示了如何配置代理,设置User-Agent,以及使用SQLite存储数据。通过`fetch_url`函数和`ThreadPoolExecutor`实现抓取与重试机制。
如何让Python爬虫在遇到异常时继续运行
|
2月前
|
数据采集 网络协议 数据挖掘
网络爬虫进阶之路:深入理解HTTP协议,用Python urllib解锁新技能
【7月更文挑战第30天】网络爬虫是数据分析和信息聚合的关键工具。深入理解HTTP协议及掌握Python的urllib库对于高效爬虫开发至关重要。HTTP协议采用请求/响应模型,具有无状态性、支持多种请求方法和内容协商等特点。
30 3
|
2月前
|
数据采集 API 开发者
🚀告别网络爬虫小白!urllib与requests联手,Python网络请求实战全攻略
【7月更文挑战第29天】在广阔的网络世界里,Python以其简洁的语法和强大的库支持成为网络爬虫开发的首选。本文聚焦于两大网络请求库——urllib和requests。urllib是Python内置库,虽API稍显复杂,却有助于理解HTTP本质。示例代码展示了如何使用`urlopen`函数发起GET请求并读取网页内容。相比之下,requests库则更加人性化,极大地简化了HTTP请求流程,使开发者能更专注于业务逻辑。
32 1
|
2月前
|
数据采集 XML API
Python 爬虫数据抓取(10):LXML
Python 爬虫数据抓取(10):LXML
45 1