如何使用Python优化爬虫和数据可视化

你是否曾经想过如何从Bilibili网站上获取有关UP主的信息,并将其可视化呈现出来?本教程将向你展示如何使用Python、Selenium、Pandas和Matplotlib优化你的爬虫数据可视化流程,以更轻松地收集和分析数据。

前言

在这个信息爆炸的时代,我们有许多方法来获取数据。而对于喜欢Bilibili的用户来说,UP主的粉丝数量和内容质量是非常关键的信息。我们将使用Python编程语言来自动抓取Bilibili上UP主的信息,并通过数据可视化来更好地理解这些数据。

准备工作

在开始之前,确保你已经安装了以下Python库:

  • Pandas:用于数据处理和分析。
  • Matplotlib:用于数据可视化。
  • Selenium:用于网页自动化操作。

你还需要下载Microsoft Edge浏览器驱动,确保与你的浏览器版本相匹配。现在,让我们开始吧!

第一步:设置环境

首先,让我们设置Python环境并导入必要的库:

import pandas as pd
import matplotlib.pyplot as plt
from selenium import webdriver
from selenium.webdriver.common.by import By
import pinyin

在这里,我们导入了所需的库,包括Pandas用于数据处理、Matplotlib用于可视化、Selenium用于网页自动化操作以及pinyin用于处理拼音。

第二步:设置中文显示

由于我们将处理中文字符,我们需要设置Matplotlib以正确显示中文字符:

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

这将确保你的可视化图表中可以正确显示中文。

第三步:编写辅助函数

在进行爬取和数据处理之前,我们将编写一些辅助函数来处理文字数据:

def getStrAllAlpha(string):
    return pinyin.get_initial(string, delimiter="").upper()

def getStrFirstAlpha(string):
    string = getStrAllAlpha(string)
    string = string[0:1]
    return string.upper()

这两个函数将用于将UP主的名字转换为拼音,并提取首字母,以便后续的数据整理。

第四步:爬取UP主信息

现在,让我们开始爬取Bilibili上UP主的信息。我们将使用Selenium来自动化这个过程。首先,设置Bilibili的搜索页面URL:

url = "https://search.bilibili.com/upuser?keyword=mc&from_source=webtop_search&spm_id_from=333.1007&order=fans"

接下来,设置浏览器的User-Agent,以模拟用户操作:

header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36'}
opt = webdriver.EdgeOptions()
opt.add_argument('--user-agent=%s' % header)
edge = webdriver.Edge(options=opt)

然后,让浏览器打开Bilibili的搜索页面:

edge.get(url)

现在,我们准备开始爬取UP主信息。我们将循环爬取100个UP主的名字和粉丝数量,并将它们存储在两个列表中:

name_list = []
people_list = []

for i in range(1, 101):
    try:
        # 使用XPath定位UP主信息
        li = edge.find_element(by=By.XPATH, value='//*[@id="user-list"]/div[1]/ul/li[' + str(i) + ']')
        txt = li.text
        name = txt.split("\n")[0].split("+")[0]
        people = txt.split("\n")[2].split(":")[1].split("万")[0]
        name_list.append(name)
        people_list.append(float(people))
        print(name, people)
    except:
        print("切页")
        # 点击下一页按钮
        button = edge.find_element(by=By.XPATH, value='//*[@id="user-list"]/div[1]/div[2]/div/ul/li[' + str(page) + ']/button').click()
        page += 1

这个循环将遍历100个UP主的信息,并将它们存储在两个列表中。如果需要翻页,它还会自动点击下一页按钮。

第五步:数据整理

现在,我们已经成功爬取了UP主的信息,接下来让我们对数据进行整理。首先,我们将按照首字母对UP主进行分类:

abc_name = []
abc_name2 = []
abc_people = []
abc_people2 = []
abc = "A"

for i in range(26):
    for j in name_list:
        if getStrFirstAlpha(j) == abc:
            abc_name.append(j)
            tt = name_list.index(j)
    abc = chr(ord(abc) + 1)

for id in abc_name:
    if id not in abc_name2:
        abc_name2.append(id)

for i in abc_name2:
    abc_people2.append(people_list[name_list.index(i)])

这段代码会将UP主按照首字母进行分类,并创建两个新的列表,分别存储UP主的名字和粉丝数量。

第六步:数据保存

我们将整理好的数据保存为CSV文件,以备后续分析和可视化使用:

data = pd.DataFrame({"UP主名字": name_list, "粉丝数量/万": people_list})
data.to_csv("up主信息.csv")

data = pd.DataFrame({"UP主名字": abc_name2, "粉丝数量/万": abc_people2})
data.to_csv("按首字母分类.csv")

这将创建两个CSV文件

,分别存储UP主的详细信息和按首字母分类的信息。

第七步:数据可视化

现在,我们已经成功获取和整理了UP主的信息,接下来让我们使用Matplotlib进行数据可视化。我们将创建两个柱状图,一个显示所有UP主的粉丝数量,另一个按首字母分类显示:

plt.subplot(1, 2, 1)
bar1 = plt.bar(name_list, people_list, color=['r', 'r', 'r', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b'])
plt.xticks(rotation=90, fontsize=13)
plt.bar_label(bar1, label_type='edge')

plt.subplot(1, 2, 2)
bar2 = plt.bar(abc_name2, abc_people2, color=['r', 'r', 'r', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b'])
plt.bar_label(bar2, label_type='edge')
plt.xticks(rotation=90, fontsize=13)

plt.show()

这段代码会创建两个子图,一个显示所有UP主的粉丝数量,另一个按首字母分类显示。最后,通过plt.show()将图表显示出来。

总结

通过这个教程,你学会了如何使用Python、Selenium、Pandas和Matplotlib来爬取Bilibili上UP主的信息,并将其进行数据整理和可视化。这对于分析UP主的粉丝数量和分类是非常有用的。

现在,你可以探索更多的数据分析和可视化方法,或者将这些数据用于其他有趣的项目。希望这个教程对你有所帮助!

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:如何使用Python优化爬虫和数据可视化

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年9月13日
下一篇 2023年9月13日

相关推荐

  • 如何优化Python数据库操作与连接

    在现代应用程序中,与数据库的交互是一个常见的任务。Python作为一门流行的编程语言,提供了多种方式来操作和连接数据库。然而,在处理大量数据或高并发请求时,数据库操作可能成为性能瓶颈。本教程将介绍如何优化P…

    2023年10月15日
    00137
  • 超越Python性能极限:创建C++扩展模块

    你是否曾想过如何提高Python代码的性能?或者你是否在处理大规模数据时感到Python的速度有些慢?如果是的话,那么你来对地方了!在本篇文章中,我将带你走进C++的魔幻世界,教你如何创建C++扩展模块,以实现超越Pyt…

    2023年9月19日
    0041
  • 青海地区网站建设服务:王大神AI技术博客带你探索区域数字化的无限可能

    大家好,我是王大神,今天我想和大家分享一下青海这片神奇的土地。青海,一个拥有无尽的自然风光和丰富的文化底蕴的地方,正在迅速地成为数字化时代的新星。而我,希望能够为这片土地带来一些新的变化,让更多的人…

    2023年10月29日
    0087
  • 使用Python下载并合并M3U8视频

    在互联网时代,视频内容丰富多样,M3U8是一种常见的视频流媒体格式,例如在线直播、视频网站等。有时候,我们可能想要下载并保存这些M3U8格式的视频供离线观看,或者进行其他处理。本教程将向你展示如何使用Python…

    2023年9月21日
    00256
  • 选择最佳GUI编程语言和工具,提高开发效率

    王大神,一名充满热情的自由职业者,最近在开发过程中遇到了一个挑战:客户需要一个在Windows平台上能够提供图形用户界面(GUI)的应用程序,并且要求打包成exe文件,而且要尽量避免bug。在一天的时间里,他尝试了…

    2023年11月17日
    0063
  • 如何使用Python批量下载微信公众号文章

    在日常生活中,我们经常浏览微信公众号上的文章,但是有时候我们希望将这些文章保存到本地,以便日后查阅。本教程将教你如何使用Python编写一个脚本,批量下载微信公众号上的文章。 开头小故事 想象一下,你最喜欢…

    2023年10月19日
    0094
  • 如何使用Python自动化RSS订阅、更新和邮件通知

    在信息爆炸的时代,获取最新的新闻、博客文章和内容更新变得至关重要。然而,每天手动检查各个网站的RSS订阅可能会非常繁琐。幸运的是,Python编程语言可以帮助我们自动化这个过程,从而轻松获取最新的信息,并通过…

    2023年10月24日
    00330
  • 记录一次中药数据库的捣鼓

    记录一次中药数据库的捣鼓 导语 在信息化、大数据的今天,手工操作逐渐显得笨拙和低效。今天,我要分享一个用Python自动获取和整理中药数据库的实践过程,以示如何通过编程实现工作自动化。 找寻数据源:机遇与挑战…

    2023年9月3日
    0068
  • 如何使用Python多线程爬虫批量下载美女图片

    在互联网时代,美女图片一直是热门的网络内容之一。你是否曾经想过如何批量下载美女图片,以便欣赏或保存?本教程将教你如何使用Python编写一个多线程爬虫,快速、高效地从网站上下载美女图片。 开头小故事 在一个…

    2023年10月19日
    00125
  • 如何使用Python创建图书馆座位预约系统

    有一天,你突然想要去图书馆学习,但是你担心座位会被抢光。这时候,一个伟大的想法闪过你的脑海:为什么不创建一个自动预约图书馆座位的系统呢?这篇文章将向你展示如何使用Python创建一个可以在微信公众号或浏览…

    2023年9月20日
    0091

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注