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 算法 排序实现快速排序
Jun 05 Python
Python深入学习之上下文管理器
Aug 31 Python
Python中decorator使用实例
Apr 14 Python
python操作 hbase 数据的方法
Dec 18 Python
浅谈Python对内存的使用(深浅拷贝)
Jan 17 Python
对python实现模板生成脚本的方法详解
Jan 30 Python
python的schedule定时任务模块二次封装方法
Feb 19 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
Apr 15 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 Python
matplotlib 范围选区(SpanSelector)的使用
Feb 24 Python
Python进行区间取值案例讲解
Aug 02 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垃圾回收机制对内存泄露的处理
2013/06/14 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
php等比例缩放图片及剪切图片代码分享
2016/02/13 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
javascript编程起步(第五课)
2007/02/27 Javascript
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
JS与C#编码解码
2013/12/03 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
Django内容增加富文本功能的实例
2017/10/17 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
打印机墨盒:123Inkjets
2017/02/16 全球购物
联想台湾官网:Lenovo TW
2018/05/09 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
心理学专业毕业生推荐信范文
2013/11/21 职场文书
会计出纳员的自我评价
2014/01/15 职场文书
公司司机岗位职责
2014/02/07 职场文书
单位工作证明范文
2014/09/14 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
简历中自我评价范文
2015/03/11 职场文书
培训班开班主持词
2015/07/02 职场文书
MySQL之DML语言
2021/04/05 MySQL
Redis Cluster集群动态扩容的实现
2021/07/15 Redis