python调用微博api
㈠ 如何通过python调用新浪微博的API来爬取数据
先上结论,通过公开的api如果想爬到某大v的所有数据,需要满足以下两个条件:
1、在你的爬虫开始运行时,该大v的所有微博发布量没有超过回溯查询的上限,新浪是2000,twitter是3200。
2、爬虫程序必须不间断运行。
新浪微博的api基本完全照搬twitter,其中接口的参数特性与底层的Nosql密不可分,建议先看点Nosql数据库的设计理念有助于更好的理解api设计。
一般来说,如果决定爬某个大v,第一步先试获取该用户的基本信息,中间会包含一条最新的status,记下其中的id号作为基准,命名为baseId。
接口中最重要的两个参数:
since_id:返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0。
max_id:返回ID小于或等于max_id的微博,默认为0。
出于各种原因,获取statuses的接口,固定为按id降序排列(scan_index_forward=false),即最新的statuses返回在前。假设该微博第一天上线,就一个用户,发了一百条,id是1到100。而你在该用户发了第50条的时候开始运行的爬虫,即baseId=50。
㈡ Scrapy 爬取新浪微博(正则和xpath解析)
本文探讨使用Python的Scrapy库进行新浪微博爬取的技术实践,重点涉及正则表达式和XPath解析技术,同时采用MongoDB进行数据存储。相比通过m.weibo.cn站点进行数据抓取,使用weibo.cn站点完成抓取更为稳定,效率更高。本文的目标是爬取新浪微博的全站数据,包括但不限于用户数据、微博数据、评论数据以及社交关系。
首先,文章介绍了微博的三个主要站点,并指出weibo.cn作为最简单的站点,是本文进行抓取操作的基础。通过登录微博获取cookie,以避免被重定向到登录界面,这是获取数据的必要步骤。接下来,文章详细阐述了爬虫文件的构建,包括重写start_requests方法,选取大V的ID进行个人详情页的抓取,并通过parse_information函数解析用户信息。
在获取用户个人信息时,文章指出一些关键信息不在主页显示,需要通过特定URL进行抓取,从而获取关注列表和粉丝列表。文章提到关注列表和粉丝列表的抓取有其固定限制,并使用update和$addToSet方法在存储数据时实现去重。对于获取用户所有微博数据,文章提供了请求URL,并介绍了如何通过特定方法处理不完全显示的微博内容,以及如何抓取微博评论信息。
在数据处理和存储方面,文章提到通过添加cookies池和数据存储策略,以及利用ip代理和mongodb账号池进行访问优化。此外,文章还分享了在执行爬虫任务时的具体策略和结果,如对英雄联盟赛事官方微博的爬取情况,以及对爬取数据进行的初步分析,包括评论数、热度、年份与微博数、各月份的发帖情况以及互动热度等。
文章最后提到了使用词云来可视化分析所获取的微博内容,展示出用户对部分解说违反规定的处理公告、对全明星投票的热议、以及17年某条微博的评论等,同时分析了评论数、热度与年份的关系,揭示了互动热度的变化趋势。通过这些分析,读者可以更好地理解新浪微博的用户互动和内容流行趋势。