【Python案例】爬取某bo热搜榜并做动态数据展示

发布于:2022-12-19 ⋅ 阅读:(465) ⋅ 点赞:(0)

前言

嗨嗨,大家好啊
最近有没有在某bo吃瓜啊,今年的瓜好像不少哦,近期的李某某事件真的令我大为震惊🤣
现在的艺人明星还是那句话:该税的税,不该睡的别睡。

请添加图片描述

正文

基本开发环境

  • Python 3.6
  • Pycharm

相关模块的使用

import requests
import parsel
import csv
import time

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

需求数据来源分析

在这里插入图片描述

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

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

在这里插入图片描述

代码实现

需要源码、教程,或者是自己有关python不懂的问题,都可以来这里哦 https://jq.qq.com/?_wv=1027&k=j1rUTY72 这里还有学习资料与免费课程领取

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

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 = '网站'
    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)

动态数据展示

  • 需要源码、教程,或者是自己有关python不懂的问题,都可以来这里哦 https://jq.qq.com/?_wv=1027&k=j1rUTY72 这里还有学习资料与免费课程领取
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()

在这里插入图片描述

请添加图片描述
好啦,今天的分享到这里就结束了 ~
对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

请添加图片描述

本文含有隐藏内容,请 开通VIP 后查看