说明
分析 微博移动端网页,网页内容较单一,便于分析 JSON 数据
- 将浏览器调成 移动端模式
- 访问 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()