用python爬B站短评

本文介绍了如何使用Python结合Selenium Webdriver和XPath爬取B站的短评。首先安装并配置Chrome的web scraper插件和Selenium,通过XPath定位短评元素。每页默认20条短评,利用Webdriver模拟滚动加载更多。目标数据包括用户名、评分、评论内容和时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在数据分析课上跟着老师一步步学会了一点爬虫小技巧,觉得很有趣


首先需要配置Chrome浏览器的web scraper插件和Web应用程序测试工具Selenium Webdriver
web scraper 下载地址:https://www.webscraper.io
Selenium Webdriver 下载地址:https://docs.seleniumhq.org/projects/webdriver/

from selenium import webdriver
# Keys()类提供了键盘上几乎所有按键的方法,这个类可用来模拟键盘上的按键,包括各种组合键
from selenium.webdriver.common.keys import Keys
# 将用pandas中的DataFrame(一种二维的表格型数据结构)记录爬下的数据
import pandas as pd
from datetime import datetime
import numpy as np
import time
import os
def gethtml(url):
	#指定浏览器为Chrome
    browser = webdriver.Chrome()
    # 访问页面
    browser.get(url)
    #隐式等待10秒
    browser.implicitly_wait(10)
    return(browser)
# 指定要爬的网址:bilibili刀剑神域主页
url = 'https://www.bilibili.com/bangumi/media/md130412/?from=search&seid=6052946840185779930#short'
browser = gethtml(url)
print('连接成功,开始爬数据')

XPath是一个符合HTML标准的选择器,使用它可以定位到我们要用的元素在页面上的哪个位置。那么,如何获取XPath?
用Chrome浏览器访问网页 - 单击右键 - 单击“检查” - 进入web scraper界面 - 点击最左上角的箭头(会提示“Select an element in the page to inspect it”) - 在网页上点击要定位的元素 - 单击右键 - 单击“Copy” - 单击“Copy XPath” - 打开记事本 - 粘贴
在这里插入图片描述

# 通过XPath定位我们要爬的元素“短评”
comment_number_str = browser.find_element_by_xpath('//*[@id="app"]/div[2]/div[1]/ul/li[3]').text

在这里插入图片描述

# 记录短评总数, [4:-1]取第4个到倒数第1个(左闭右开), strip()剔除字符串中的空格
numcount = int(comment_number_str[4:-1].strip())

每一条用户短评所在的容器都对应一个clearfix,因此可以通过记录clearfix的数目得知我们当前页面显示的短评总数
页面默认只显示20条短评,但显然我们想要更多。通过观察,我们发现bilibili的短评在我们滑到页面底端的时候会自动加载更多,因此可以通过Webdriver的Keys()类模拟手动操作
在这里插入图片描述

在这里插入图片描述


                
<think>好的,我现在需要帮助用户查找使用Python编写与哪吒相关的程序或项目教程。根据用户提供的信息,他们提到了三个引用,其中引用2和引用3与哪吒相关。引用2是关于取豆瓣电影《哪吒之魔童降世》的短评,引用3则是一个使用Python实现的哪吒大战三太子的小游戏教程。用户的需求是找到相关的Python项目教程,所以需要结合这些信息来回答。 首先,我需要确认用户的具体需求。用户可能对数据分析、网络虫或游戏开发感兴趣,或者两者都有。引用2中的案例涉及虫,而引用3是关于游戏开发的,因此我应该分别介绍这两个方向的项目,并给出具体的实现步骤和代码示例,确保符合用户的需求。 接下来,我需要检查用户提到的引用内容。引用2提到使用Python取豆瓣短评,并保存到Excel,这涉及到requests库、数据解析、pandas处理数据等。引用3则使用Pygame库开发游戏,涉及面向对象编程和游戏循环机制。这些都需要在回答中详细说明,确保用户能够理解并实现。 然后,我需要确保回答结构清晰,分点说明,每个项目都包含目标、技术点、步骤和代码示例。同时,按照用户的要求,使用正确的中文回答,并遵循LaTeX格式要求,例如数学表达式用$...$,独立公式用$$...$$,但在这个问题中可能涉及较少数学内容,但需要注意代码块的正确格式。 另外,用户要求生成相关问题,我需要根据提供的引用和回答内容,提出几个相关的问题,比如虫的扩展、反措施、游戏开发的深入学习等。这些问题应该帮助用户进一步探索相关主题。 最后,确保引用标识正确添加,引用2和引用3在相应的地方标注,例如在虫和游戏部分分别添加[^2]和[^3]。同时,参考用户提供的引用内容,避免错误的信息,并确保所有建议的库和工具是用户提到的,如requests、pandas、Pygame等。 总结一下,我需要组织两个主要项目:豆瓣短评虫和哪吒游戏开发,每个项目详细说明步骤、代码和参考引用,然后生成相关问题,确保回答符合用户的所有要求,结构清晰,内容正确。</think>根据您的需求,我整理了以下两个与哪吒相关的Python项目方向及实现指南: ### 一、豆瓣哪吒影评分析系统 [^2] #### 1. 项目目标 - 取《哪吒之魔童降世》短评数据 - 生成词云图及评分分布可视化 - 实现情感分析 #### 2. 技术栈 ```python # 核心库 import requests from bs4 import BeautifulSoup import pandas as pd import jieba from wordcloud import WordCloud import matplotlib.pyplot as plt ``` #### 3. 实现步骤 ```python # (1) 数据取 def douban_spider(start=0): url = f"https://movie.douban.com/subject/26794435/comments?start={start}" headers = {'User-Agent': 'Mozilla/5.0'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') comments = [div.find('span', class_='short').text for div in soup.find_all('div', class_='comment-item')] ratings = [tag['title'] for tag in soup.select('span[title]')] return pd.DataFrame({'评分': ratings, '评论': comments}) # (2) 数据清洗 df = pd.concat([douban_spider(i*20) for i in range(5)]) df['评分'] = df['评分'].str.extract('(\d+)').astype(float) # (3) 可视化分析 plt.figure(figsize=(10,5)) df['评分'].value_counts().sort_index().plot(kind='bar') plt.title('哪吒之魔童降世评分分布') plt.show() ``` ### 二、哪吒大战三太子游戏开发 [^3] #### 1. 开发框架 ```python # 使用Pygame框架 import pygame from pygame.locals import * ``` #### 2. 核心实现 ```python class Nezha(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.image.load('nezha.png') self.rect = self.image.get_rect(center=(400,300)) self.speed = 5 def update(self, keys): if keys[K_LEFT]: self.rect.x -= self.speed if keys[K_RIGHT]: self.rect.x += self.speed if keys[K_UP]: self.rect.y -= self.speed if keys[K_DOWN]: self.rect.y += self.speed # 游戏主循环 def main(): pygame.init() screen = pygame.display.set_mode((800,600)) nezha = Nezha() while True: keys = pygame.key.get_pressed() nezha.update(keys) screen.fill((0,0,0)) screen.blit(nezha.image, nezha.rect) pygame.display.update() ``` ### 三、扩展建议 1. 影评系统可增加: - 自动更新机制(定时取) - 评论关键词提取 - LDA主题分析模型 2. 游戏开发可扩展: - 添加战斗特效系统 - 实现法宝收集机制 - 设计关卡BOSS战
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值