作者:摄影师张恒 | 来源:互联网 | 2024-10-17 19:01
想爬取微博的评论,看了很多代码都是要用到这个链接,可是为什么找不到show?id这条,而是https://m.weibo.cn/comments/hotflow?id=这条呢,有没有大佬帮忙解疑
想爬取微博的评论,看了很多代码都是要用到这个链接,可是为什么找不到show?id这条,而是https://m.weibo.cn/comments/hotflow?id=这条呢,有没有大佬帮忙解疑一下
虽然数据不再是通过接口的方法返回的,但是老接口还能用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 是分页参数,这个参数可以从一个请求返回的数据中拿到
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| """
爬取微博评论,保存到数据库
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) |