如何使用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日

相关推荐

  • AI分析市场情绪,结合马丁格尔策略,用Python开发虚拟货币量化交易机器人

    一周内,王大神的虚拟货币交易账户收益率飙升达128%,这令人瞩目。他不是运气好,而是凭借自己的技术和策略,在虚拟货币市场中实现了出色的表现。在这个教程中,我们将深入探讨王大神是如何做到的,以及如何使用AI…

    2023年12月28日
    00
  • LM Studio 0.2.10发布:全面解析最新版本的功能和改进

    LM Studio是一款备受欢迎的文本生成工具,旨在为用户提供强大的自然语言处理能力。最新发布的LM Studio 0.2.10版本带来了一系列令人兴奋的新功能和bug修复,为用户提供更加出色的体验。本文将深入探讨LM Studio 0.2…

    2024年1月6日
    00
  • 灵猫大神:通过大数据分析一下青海广告行业。

    在互联网时代,数据分析已经成为各行各业的必备工具,特别是在广告行业。数据不仅仅是数字,它是洞察、决策和创新的源泉。今天,我们将深入探讨青海广告行业的数据分析,了解如何通过数据洞察需求、了解行业动态,…

    2022年6月24日
    00
  • 跨境电商入门攻略:开启全球市场之门

    跨境电商,指的是通过互联网平台进行的国际贸易活动,是电子商务的一种新形态。近年来,随着全球化的加速和互联网技术的发展,跨境电商市场迅速扩大。 市场规模:根据《2022年全球电子商务报告》,全球跨境电商交易…

    2023年12月30日
    00
  • 记录一次中药数据库的捣鼓

    在信息化、大数据的今天,手工操作逐渐显得笨拙和低效。今天,我要分享一个用Python自动获取和整理中药数据库的实践过程,以示如何通过编程实现工作自动化。 找寻数据源:机遇与挑战并存 解决任何问题的第一步总是…

    2023年9月3日
    00
  • 2023年量化交易心得

    每当我坐在电脑前,看着交易屏幕上的波动,我都能感受到2023年带来的巨大挑战和机遇。作为一名量化交易员,我深知量化交易不仅仅是一个职业,更是一种探索未知的旅程。在这个数字化和信息爆炸的时代,我在2023年积…

    2023年8月23日
    00
  • 教程:使用Python自动分类整理照片

    作为一个热爱摄影的摄影师或者只是一个热爱拍照的普通人,你的电脑可能积累了大量的照片。这些照片散落在各个文件夹中,有时候你可能会感到疑惑,不知道应该如何将它们有序地整理起来。手动分类和整理这些照片是一…

    2023年9月21日
    00
  • 如何解决Python中Crypto库下载报错:ModuleNotFoundError

    大家好,作为一名Python开发者,你是否曾经在使用Python编写程序时遇到过ModuleNotFoundError: No module named ‘Crypto’的错误?这个问题可能会令你感到困惑,但不要担心,本文将为你详细介绍如何解决这个问题。 …

    2023年9月25日
    00
  • 如何使用Python自动化定时发微博和推特

    社交媒体已经成为我们生活的一部分,而微博和推特是其中最受欢迎的平台之一。但是,如果你想定期更新你的微博和推特账户,可能会花费大量时间和精力。幸运的是,Python编程语言可以帮助你自动化这个过程,让你的社…

    2023年10月24日
    00
  • 如何使用Python删除Excel中的指定数据

    大家好,我是王大神。今天,我将向您展示如何使用Python来删除Excel中的指定数据。Excel是一个功能强大的电子表格工具,但有时候我们需要对表格进行清理,删除不需要的数据。Python是一个出色的工具,可以帮助我们…

    2023年10月14日
    00