b站python评论抽奖_基于python的B站评论爬虫及抽奖项目!确实方便好用!

本文介绍了一个使用Python编写的无头爬虫抽奖系统,该系统用于从B站视频评论中抓取数据并进行抽奖。通过引入必要的库,如selenium和xlrd/xlwt,实现Excel文件的读写以及网页数据的抓取。最后,展示了一个简单的抽奖函数,从抓取的评论数据中随机选取中奖者。
摘要由CSDN通过智能技术生成

前言

随着新型娱乐产业的快速发展,众多人为了为自己的视频吸引观众,通常会用华美的奖品吸引观众,但是观众通常因为对up主的不信任导致参与活动不够活跃,而且考虑到有时up主可能用各种技巧耍诈的情况发生,所以信任关系并不是那么的深刻。但是机器是不会骗人的!于是今天的项目应运而生,这是一个由python爬虫编写的抽奖系统。

这里用的是python语言

一、先设计对这个爬虫建立软件工程模型

本程序有三个步骤,我们使用的是无头爬虫,比较适合新手入门。将想要爬取的数据写入到xls文件中,所以本爬虫有三大步。第一:xls表格的读写操作。第二:网站数据的读取。第三:在写好的xls文件中抽取每个用户的id化作列表。

二、使用步骤

1.引入库

代码如下(示例):

import re

import numpy as np

import time

import xlrd

import xlwt

from xlutils.copy import copy

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

import win32con

import win32api

import random

2.建立以及读写工作簿的函数

代码如下(示例):

def write_excel_xls(path, sheet_name, value):

index = len(value) # 获取需要写入数据的行数

workbook = xlwt.Workbook() # 新建一个工作簿

sheet = workbook.add_sheet(sheet_name) # 在工作簿中新建一个表格

for i in range(0, index):

for j in range(0, len(value[i])):

sheet.write(i, j, value[i][j]) # 像表格中写入数据(对应的行和列)

workbook.save(path) # 保存工作簿

def write_excel_xls_append(path, value):

index = len(value) # 获取需要写入数据的行数

workbook = xlrd.open_workbook(path) # 打开工作簿

sheets = workbook.sheet_names() # 获取工作簿中的所有表格

worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格

rows_old = worksheet.nrows # 获取表格中已存在的数据的行数

new_workbook = copy(workbook) # 将xlrd对象拷贝转化为xlwt对象

new_worksheet = new_workbook.get_sheet(0) # 获取转化后工作簿中的第一个表格

for i in range(0, index):

for j in range(0, len(value[i])):

new_worksheet.write(i+rows_old, j, value[i][j]) # 追加写入数据,注意是从i+rows_old行开始写入

new_workbook.save(path) # 保存工作簿

def read_excel_xls(path):

workbook = xlrd.open_workbook(path) # 打开工作簿

sheets = workbook.sheet_names() # 获取工作簿中的所有表格

worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格

for i in range(0, worksheet.nrows):

for j in range(0, worksheet.ncols):

print(worksheet.cell_value(i, j), "\t", end="") # 逐行逐列读取数据

print()

3.读取网页数据

def spider(book_name_xls,sheet_name_xls,max_size):

#这里是你的谷歌浏览器驱动的位置,如果报错chromdriver的问题肯定是这个地方的问题

driver = webdriver.Chrome(r'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')

driver.set_window_size(1400, 800)

driver.get("https://www.bilibili.com/video/BV1v54y1e7ff?spm_id_from=333.851.b_7265706f7274466972737431.12")

#B站特有的js加载代码,需要操纵鼠标进行爬取,这是首例

time.sleep(3)

win32api.mouse_event(win32con.MOUSEEVENTF_WHEEL,0,0,-1500)

for i in range(60):

time.sleep(1)

print('进入等待时间,剩余时间为%s'%(60-i),end='\r',)

value_title = [["rid", "评论人id", "评论内容"],]

write_excel_xls(book_name_xls, sheet_name_xls, value_title)

rid = 0

#108824

for i in range(max_size-1):

p=1

for p in range(21):

try:

rid = rid + 1

#普通评论人内容

comment_id=driver.find_elements_by_css_selector(f'div.comment-list > div.list-item.reply-wrap:nth-child({p})>div.con>div.user>a.name')[0].text

comment_content = driver.find_elements_by_css_selector(f'div.comment-list > div.list-item.reply-wrap:nth-child({p})>div.con>p.text')[0].text

price_list.append(comment_id)

p+=1

print("正在爬取第%s"%rid)

value1 = [[rid, comment_id,comment_content],]

write_excel_xls_append(book_name_xls, value1)

except:

pass

next_btn = driver.find_element_by_css_selector('div.comment-header div.header-page a.next')#使用css选择器选择下一页a标签

next_btn.click()

抽奖函数

def choices():

data = xlrd.open_workbook("F:/数据集散地/弹幕爬虫.xls")

table = data.sheet_by_name('B站弹幕爬虫')

content = table.col_values(1)

for i in range(3): #这里的3是抽取幸运用户个数,可以根据需求自己改动

print(random.choice(content))

主函数

if __name__ == '__main__':

book_name_xls = "F:/数据集散地/弹幕爬虫.xls" #填写你想存放excel的路径,没有文件会自动创建

sheet_name_xls = 'B站弹幕爬虫' #sheet表名

max_size = 10 #这里不要改,实际设置的是要搜寻数据的量

spider(book_name_xls,sheet_name_xls,max_size)

choices()

不多废话!

获取到数据的局部截图。

抽奖结果示例

完整项目代码获取加群:1136192749

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值