Python如何爬取b站热门视频并导入Excel


Posted in Python onAugust 10, 2020

代码如下

#encoding:utf-8
import requests
from lxml import etree
import xlwt
import os
 
# 爬取b站热门视频信息
def spider():
  video_list = []
  url = "https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3"
  html = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"}).text
  html = etree.HTML(html)
  infolist = html.xpath("//li[@class='rank-item']")
  for item in infolist:
    rank = "".join(item.xpath("./div[@class='num']/text()"))
    video_link = "".join(item.xpath(".//div[@class='info']/a/@href"))
    title = "".join(item.xpath(".//div[@class='info']/a/text()"))
    payinfo = "".join(item.xpath(".//div[@class='detail']/span/text()")).split("万")
    play = payinfo[0] + "万"
    comment = payinfo[1]
    if comment.isdigit() == False:
      comment += "万"
    upname = "".join(item.xpath(".//div[@class='detail']/a/span/text()"))
    uplink = "http://" + "".join(item.xpath(".//div[@class='detail']/a/@href"))
    hot = "".join(item.xpath(".//div[@class='pts']/div/text()"))
    video_list.append({
      'rank': rank,
      'videolink': video_link,
      'title': title,
      'play': play,
      'comment': comment,
      'upname': upname,
      'uplink': uplink,
      'hot': hot
    })
  return video_list
 
 
def write_Excel():
  # 将爬取的信息添加到Excel
  video_list = spider()
  workbook = xlwt.Workbook() # 定义表格
  sheet = workbook.add_sheet("b站热门视频")  # 添加sheet的name
  xstyle = xlwt.XFStyle()  # 实例化表格样式对象
  xstyle.alignment.horz = 0x02 # 字体居中
  xstyle.alignment.vert = 0x01
  head = ['视频名', 'up主','排名', '热度','播放量','评论数']
  for h in range(len(head)):
    sheet.write(0, h, head[h], xstyle)
  i = 1
  for item in video_list:
    # 向单元格(视频名)添加该视频的超链接
    if '"' in item["title"]:
      item["title"] = item["title"].split('"')[1]
    title_data = 'HYPERLINK("'+item["videolink"]+'";"'+item["title"]+'")'  # 设置超链接
    sheet.col(0).width = int(256 * len(title_data) * 3/5)  # 设置列宽
    sheet.write(i, 0, xlwt.Formula(title_data), xstyle)
    name_data = 'HYPERLINK("'+item["uplink"]+'";"'+item["upname"]+'")'
    sheet.col(1).width = int(256 * len(name_data) * 3/5)
    sheet.write(i, 1, xlwt.Formula(name_data), xstyle)
    sheet.write(i, 2, item["rank"], xstyle)
    sheet.write(i, 3, item["hot"], xstyle)
    sheet.write(i, 4, item["play"], xstyle)
    sheet.write(i, 5, item["comment"], xstyle)
    i += 1
  # 如果文件存在,则将其删除
  file = "b站热门视频信息.xls"
  if os.path.exists(file):
    os.remove(file)
  workbook.save(file)
 
if __name__ == '__main__':
  write_Excel()

结果展示:

Python如何爬取b站热门视频并导入Excel

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python跳出循环语句continue与break的区别
Aug 25 Python
python实现感知器算法详解
Dec 19 Python
python创建文件备份的脚本
Sep 11 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
对python中if语句的真假判断实例详解
Feb 18 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 Python
Pytorch之卷积层的使用详解
Dec 31 Python
Python tkinter常用操作代码实例
Jan 03 Python
Python2与Python3的区别详解
Feb 09 Python
Python 面向对象部分知识点小结
Mar 09 Python
Python urllib2运行过程原理解析
Jun 04 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
拿来就用!Python批量合并PDF的示例代码
Aug 10 #Python
Python 发送邮件方法总结
Aug 10 #Python
Python getattr()函数使用方法代码实例
Aug 10 #Python
Python matplotlib模块及柱状图用法解析
Aug 10 #Python
Python如何操作docker redis过程解析
Aug 10 #Python
基于Python实现下载网易音乐代码实例
Aug 10 #Python
Python grequests模块使用场景及代码实例
Aug 10 #Python
You might like
php获取随机数组列表的方法
2014/11/13 PHP
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
jQuery实现文本框邮箱输入自动补全效果
2015/11/17 Javascript
js实现无缝滚动图
2017/02/22 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
2020/10/29 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
用python实现批量重命名文件的代码
2012/05/25 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
python绘制玫瑰的实现代码
2020/03/02 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
前端实现打印图像功能
2019/08/27 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
市场营销专业个人自荐信格式
2013/09/21 职场文书
室内设计自我鉴定
2013/10/15 职场文书
护理学应聘自荐书范文
2014/02/05 职场文书
四查四看剖析材料
2014/02/14 职场文书
体育教师求职信
2014/05/24 职场文书
优秀共产党员演讲稿
2014/09/04 职场文书
大学学生个人总结
2015/02/15 职场文书
实习生辞职信范文
2015/03/02 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL