下面这条 url 可以获取指定用户最近发布的微博,count 指定获取多少条微博,uid 就是用户 id。
const api = `https://weibo.com/ajax/statuses/mymblog?uid=${uid}&count=${count}&page=${page}`;
不过大家都建议爬移动端 m.weibo.cn
。获取某位用户最新的微博:
const count = 5;
const page = 1;
const uid = "2106855375";
const url = `https://m.weibo.cn/api/container/getIndex?uid=${uid}&t=0&luicode=10000011&containerid=107603${uid}&page=${page}&count=${count}`;
//https://m.weibo.cn/api/container/getIndex?uid=1729382834&t=0&luicode=10000011&containerid=1076031729382834&page=1&count=5
其中 107603 是特殊的数字,如果换成 100505 可以只获取这位用户的 userinfo,例如:
const uid = "2106855375";
const url = `https://m.weibo.cn/api/container/getIndex?containerid=100505${uid}`;
有人分享了这个 api 的限制:
限制还是有的,如果不登陆直接请求,短时间会出现 403,加上 Cookies 会解决 403 问题,小规模单机单 job 爬取没问题,如果增加 job 数,每秒达到约 10 次左右会出现 414,此时需要切换代理解决。
获取用户最新微博的 API 返回的关键字段:
card.mblog.mblogtype
为 2 表示原创置顶?为 0 表示普通原创微博?为 1 表示热门原创?card.mblog.page_info.type
为 video 表示包含视频,为 search_topic 表示含有标签,card.mblog.isLongText
判断是不是长微博;card.mblog.retweeted_status
判断是不是转发;mblog.user.screen_name
;card.mblog.page_info.type
有 video、topic(超话)、search_topic、webpage(例如绿洲推广横幅)、wenda,需要注意不是所有微博都有 page_info,page_info 是微博中的一块特定区域特定信息;mblog.id
或者 mblog.mid
,拿到 uid 和 mid 就可以访问这条微博,例如;card.mblog.text
获取文字,通过 card.mblog.pics
获取图片,pics 是一个数组,每个元素包含大小两个尺寸的图片信息,文字如果显示可直接访问这条微博的链接(看上一条说明)提取;page_info.page_pic.url
获取视频封面图;