想爬取微博的评论,看了很多代码都是要用到这个链接,可是为什么找不到show?id这条,而是https://m.weibo.cn/comments/hotflow?id=这条呢,有没有大佬帮忙解疑一下
1条回答 默认 最新
- 多鱼的夏天 2021-02-26 10:42关注
虽然数据不再是通过接口的方法返回的,但是老接口还能用https://m.weibo.cn/api/comments/show?id={id}&page={page} , 这里的id是某条微博的id, page 是分页参数。
新接口,https://m.weibo.cn/comments/hotflow?mid=4477013081328252&max_id=330569188932643&max_id_type=0
这个接口也能拿到评论,mid 是某条微博的参数, max_id 是分页参数,这个参数可以从一个请求返回的数据中拿到
""" 爬取微博评论,保存到数据库 https://m.weibo.cn/api/comments/show?id=4477013081328252&page=50 该接口能获取微博的前50页数据,每页10条, id 是某条微博的id https://m.weibo.cn/comments/hotflow?mid=4477013081328252&max_id=330569188932643&max_id_type=0 此接口能爬到所有评论信息, mid 是某条微博id, max_id 是上一个请求返回的分页参数, max_id_type 固定为0就好 """ from pymongo import MongoClient import requests import time __author__ = 'liuzhijun' headers = { "Host": "m.weibo.cn", "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) " "Version/9.0 Mobile/13B143 Safari/601.1", "Cookie": "xxxxx" # 这里将浏览器的cookie复制过来进行了。 } client = MongoClient('mongodb://localhost:27017/') db = client['weibo'] def main(mid, max_id): """ :param mid: 某条微博id :param max_id: 分页参数 :return: """ url = "https://m.weibo.cn/comments/hotflow?max_id_type=0" params = {"mid": mid} if max_id: params['max_id'] = max_id res = requests.get(url, params=params, headers=headers) print(res.content) result = res.json() max_id = result.get("data").get("max_id") data = result.get('data').get('data') for item in data: db['comment'].insert_one(item) if max_id: time.sleep(1) main(mid, max_id) if __name__ == '__main__': main("4477013081328252", None)
解决 1无用
悬赏问题
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?
- ¥15 c++头文件不能识别CDialog