舆情大数据分析-python爬取微博数据 作者:马育民 • 2022-04-26 08:55 • 阅读:10119 # 说明 分析 微博移动端网页,网页内容较单一,便于分析 JSON 数据 1. 将浏览器调成 移动端模式 2. 访问 https://m.weibo.cn/ # python 代码 ``` from time import sleep import requests import json import datetime filename = "一汽红旗" url="https://m.weibo.cn/api/container/getIndex?containerid=100103type=1&q=一汽红旗&page_type=searchall&page=" headers={ 'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36', 'cookie':'SUB=_2A25PUxdZDeRhGeBJ61cR9y7NyjmIHXVsv7kRrDV6PUJbkdANLWKjkW1NRna4VEYq3MfdL-ujJSyPVGsiYQZrKuVj; _T_WM=89621521152; WEIBOCN_FROM=1110006030; MLOGIN=1; XSRF-TOKEN=592e45; M_WEIBOCN_PARAMS=luicode%3D10000011%26lfid%3D100103type%253D1%2526q%253D%25E4%25B8%2580%25E6%25B1%25BD%25E7%25BA%25A2%25E6%2597%2597%26fid%3D100103type%253D1%2526q%253D%25E4%25B8%2580%25E6%25B1%25BD%25E7%25BA%25A2%25E6%2597%2597%26uicode%3D10000011' } def send(page,f): urlTemp = url + str(page) print("urlTemp",urlTemp) #发送get请求 resp=requests.get(urlTemp,headers=headers) #响应内容 # print(resp.text) ok = resp.json().get("ok") if ok == 0: return # 由于返回的字符串中,汉字显示成 \uxxx,所以需要转换 jsonStr = json.dumps(resp.json(),ensure_ascii=False) #转成字符串 f.write(jsonStr) f.write("\n") cards = resp.json().get("data").get("cards") for card in cards: cardType = card.get("card_type") if cardType == 9 : lineTemp = json.dumps(card,ensure_ascii=False) f.write(lineTemp) f.write("\n") elif cardType == 11: cardGroup = card.get("card_group") for card in cardGroup: cardType = card.get("card_type") if cardType == 9 : lineTemp = json.dumps(card,ensure_ascii=False) f.write(lineTemp) f.write("\n") def exe(): datetimeStr = datetime.datetime.today().strftime('%Y%m%d_%H%M') f=open(filename+"_"+datetimeStr+'.txt','w',encoding="utf-8") page = 1 for item in range(1,1000): send(page,f) page += 1 sleep(3) if item%10 == 0: f.flush() f.close() exe() ``` 原文出处:http://malaoshi.top/show_1IX3CUnH2eqg.html