飞道的博客

【Python】得到弹幕并保存到Excel中

254人阅读  评论(0)
hello,我是李华同学,最近开始学习爬虫,下面是我实现的一个得到弹幕的代码

找一个的URL

想要得到一个网站的内容,首先要找到你想要内容的具体位置,首先你先找到一个有弹幕的地方,找到后按F12,找到在网络下,然后刷新页面,在左边搜索栏搜history可以找到储存弹幕的地址(图1),弹幕地址具体情况具体分析。

在标头下的“请求URL”,后面那一串链接就是要爬取的位置。(图2)

图1

图2

实现代码过程

    • 将Python代码和Excel文件放在一个文件下

图3

    • 用request库进行操作

不会下载库的同学可以在pycharm终端下用pip下载,也可以在设置setting的project下下载,具体步骤不会可以搜大佬的文章。

用requests对网站进行访问,这里用到了get请求方法,请求方法可以在之前找URL下看到。(图2)

requests.get('https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory?roomid=5050')
    • 对访问的内容进行选择

我这里就选择了姓名和弹幕


   
  1. for ac in d[ 'data'][ 'room']:
  2. s = "{}说:{}". format(ac[ 'nickname'], ac[ 'text'])
    • 防止得到的内容重复

用列表储存爬取的数据,用if条件判断新爬取的内容是否在列表ls中,如果不在就用append追加到列表中。


   
  1. ls = []
  2. if s not in ls:
  3. ls.append(ls)         
    • 把得到的数据保存到Excel中

在这个过程中用到了openpyxl库。

首先在Excel中先写下表头(图4),为接下来插入得到的内容找位置,然后保存(记得爬取的时候不要打开Excel文件)。


   
  1. # 打开文件
  2. wb = openpyxl.Workbook()
  3. # 使用的工作对象创建一张表
  4. sheet = wb.active
  5. # 在sheet1表中写入内容 插入内容
  6. sheet.append([ 'B友姓名', 'B友说的话'])

保存内容,这个是借鉴一个大佬的博客:【(1条消息) 利用python爬取信息并保存到excel_wer875442的博客-CSDN博客_如何将爬取的数据存入excel】,具体的解释可以看这位大佬的,还有实例。


   
  1. print( 'B友姓名' + nickname, 'B友说的话' + text)
  2. print( '开始写入excel,请稍等...', end= '')
  3. xx_info = [nickname, text]
  4. sheet.append(xx_info)
  5. print( '写入成功\n')
  6. # 关闭保存工作簿
  7. wb.save( 'data.xls')

图4

全部代码(代码的直接取)


   
  1. import random
  2. import requests
  3. import time
  4. import openpyxl
  5. # 打开文件
  6. wb = openpyxl.Workbook()
  7. # 使用的工作对象创建一张表
  8. sheet = wb.active
  9. # 在sheet1表中写入内容 插入内容
  10. sheet.append([ 'B友姓名', 'B友说的话']) #这是在excel第一行插入,可以相当于一个文件的表头
  11. # 用列表储存爬取内容,防止出现相似值
  12. ls = []
  13. # 循环实时弹幕
  14. while True:
  15. # 爬取的直播间
  16. r = requests.get( '') #这里括号里放找到的URL
  17. # 每次爬取的间隔,防止让服务器崩溃
  18. time.sleep(random.randint( 1, 3))
  19. # 将输出的字符串内容转换成字典形式
  20. d = eval(r.text)
  21. # 在这两字典中爬取
  22. for ac in d[ 'data'][ 'room']:
  23. s = "{}说:{}". format(ac[ 'nickname'], ac[ 'text'])
  24. nickname = ac[ 'nickname']
  25. text = ac[ 'text']
  26. # 判断输出内容是否重复
  27. if s not in ls:
  28. ls.append(ls)
  29. # 确定没有重复值了输出
  30. # 颜色
  31. sheet.sheet_properties.tabColor = '000000'
  32. print( 'B友姓名' + nickname, 'B友说的话' + text)
  33. print( '开始写入excel,请稍等...', end= '')
  34. xx_info = [nickname, text]
  35. sheet.append(xx_info)
  36. print( '写入成功\n')
  37. # 关闭保存工作簿
  38. wb.save( 'data.xls')

陌生人感谢您的观看,如果帮助您解决了问题,请给我点一个赞,让我有更充足的动力学习。


转载:https://blog.csdn.net/weixin_70445937/article/details/128540367
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场