- 登录微博手机站,若需要输入短信验证码则输入。
2.按F12进入开发者工具,搜索你需要爬取的用户,进入其主页,并按照 下图操作获取用户的uid及containerid
3.下载测试工具Postman,复制根据上图操作出现的Request URL并使用GET请求,我此时的链接是:
https://m.weibo.cn/api/container/getIndex?uid=2803301701&t=0&luicode=10000011&lfid=100103type%3D1%26q%3D%E4%BA%BA%E6%B0%91%E6%97%A5%E6%8A%A5&type=uid&value=2803301701&containerid=1076032803301701
那么此时可以看出这个链接可以获取帖子信息,不过发现其json下[data][cards]只有11个数据,那么如何获取更多数据呢,继续回到第2步,继续下拉刷新新的数据,发现出现新的数据时,会有新的请求,比如我此时的Request URL链接是:
https://m.weibo.cn/api/container/getIndex?uid=2803301701&t=0&luicode=10000011&lfid=100103type%3D1%26q%3D%E4%BA%BA%E6%B0%91%E6%97%A5%E6%8A%A5&type=uid&value=2803301701&containerid=1076032803301701&since_id=4456562187563150
通过和上一步的URL对比,发现刷新新数据请求的链接多了一个参数sinceid=4456562187563150,而这个since_id则是上一次刷新最后一个帖子的id:
那么到了这里思路就有了,我们可以通过不过修改since_id一直到获取所有数据。
4.上面说到的Request URL链接很长,但是部分数据参数可以看出是用户的uid及containerid,而删除掉部分参数,我们发现链接依然有效,最后我们使用:
https://m.weibo.cn/api/container/getIndex?uid=2803301701&type=uid&value=2803301701&containerid=1076032803301701
而其中的uid、value及containerid则是之前获取到的特定用户的值。
5.由于微博对于爬取速度做了限制,如何爬取更多数据是个问题,关于cookie登录,使用User-Agent及IP代理我会在下一篇文章详细说明。