import requests
from bs4 import BeautifulSoup
from matplotlib import pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
fig,ax = plt.subplots()
def updata():
url = 'https://s.weibo.com/top/summary?cate=realtimehot'
r = requests.get(url)
r.raise_for_status
r.encoding = r.apparent_encoding
soup = BeautifulSoup(r.text,'html.parser')
data = soup.find_all('a')
relst,relit = [],[]
for item in data:
relst.append(item.text)
data = soup.find_all('span')
for item in data:
relit.append(item.text)
relit = list(map(int,relit))
relst = relst[5:-11:]
return (relst,relit)
textindex = list(range(-1,49))
ylst = [i for i in range(1,51)]
ylst = list(map(str,ylst[::-1]))
while True:
left,down = updata()[0][::-1],updata()[1][::-1]
ax.cla()
ax.bar(x=0,bottom=ylst,height=0.8,width=down,color='b',orientation='horizontal')
plt.title('微博热搜分析')
it = 0
for x,item in zip(down,left):
plt.text(x + 1,y = textindex[it] + 0.7,s=item,fontsize=8)
it += 1
plt.xlabel('搜索次数/Count')
plt.xlim((0,5000000))
plt.pause(0.1)
效果如下:
[北晨lpl] python微博热搜数据动态展现