您当前的位置: 首页 > 

魔王不会哭

暂无认证

  • 4浏览

    0关注

    149博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

教你定时爬取微博热搜榜并做动态数据展示,让你不错过任何一个吃瓜热点

魔王不会哭 发布时间:2021-09-13 16:54:46 ,浏览量:4

基本开发环境
  • Python 3.6
  • Pycharm
相关模块的使用
import requests
import parsel
import csv
import time

安装Python并添加到环境变量,pip安装需要的相关模块即可。

需求数据来源分析

请添加图片描述

热搜榜数据, 每次刷新上面的热度数值都是会发生边改变,每隔一段时间可以爬取一下榜单数据,然后可以做一个数据展示。

热搜榜数据内容还是比较好爬的, 因为是静态网页数据内容, 如果大家有认真看过之前的问题,那么这个网站还是很好爬取的。 请添加图片描述

代码实现

每一分钟爬取一次数据内容

import requests
import parsel
import csv
import time

f = open('热榜.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '时间',
    '排名',
    '标题',
    '热度',
])
csv_writer.writeheader()
while True:
    now_time = int(time.time())
    timeArray = time.localtime(now_time)
    date = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
    url = 'https://s.weibo.com/top/summary?cate=realtimehot'
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36',
    }
    response = requests.get(url=url, headers=headers)
    selector = parsel.Selector(response.text)
    trs = selector.css('#pl_top_realtimehot tbody tr')[:11]
    for tr in trs:
        num = tr.css('td.td-01.ranktop::text').get()
        if num:
            if num.isdigit():
                title = tr.css('.td-02 a::text').get()
                hot = tr.css('.td-02 span::text').get()
                dit = {
                    '时间': date,
                    '排名': num,
                    '标题': title,
                    '热度': hot,
                }
                print(dit)
                csv_writer.writerow(dit)
    time.sleep(60)
动态数据展示
tl = Timeline()
for i in range(20):
    bar = (
        Bar()
        .add_xaxis(list(data['标题'])[i*10:i*10+10][::-1])
        .add_yaxis("微博热搜榜", list(data['热度'])[i*10:i*10+10][::-1])
        .reversal_axis()
        .set_global_opts(
            title_opts=opts.TitleOpts("{}".format(list(data['时间'])[i*10]),pos_right='0%',pos_bottom='15%'),
            xaxis_opts=opts.AxisOpts(
                splitline_opts=opts.SplitLineOpts(is_show=True)),
            yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True),
                                     axislabel_opts=opts.LabelOpts(color='#FF7F50')),)
        .set_series_opts(label_opts=opts.LabelOpts(position="right",color='#9400D3'))
    )
    grid = (
        Grid()
        .add(bar, grid_opts=opts.GridOpts(pos_left="25%",pos_right="0%"))
    )
    tl.add(grid, "{}年".format(i))  #设置标签
    tl.add_schema(
        play_interval=200,   #播放速度
        is_timeline_show=False,  #是否显示 timeline 组件
        is_auto_play=True,
    )
tl.render_notebook()

请添加图片描述

喜欢可以点一点赞和关注哦! 有问题也可以在下方评论区打出来!

关注
打赏
1665385393
查看更多评论
立即登录/注册

微信扫码登录

0.0691s