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中endswith()函数的基本使用
Apr 07 Python
python实现根据用户输入从电影网站获取影片信息的方法
Apr 07 Python
Python中基础的socket编程实战攻略
Jun 01 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
TensorFlow 合并/连接数组的方法
Jul 27 Python
解决安装python库时windows error5 报错的问题
Oct 21 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
Django跨域资源共享问题(推荐)
Mar 09 Python
快速了解Python开发环境Spyder
Jun 29 Python
python识别验证码的思路及解决方案
Sep 13 Python
python获得命令行输入的参数的两种方式
Nov 02 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 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
推荐5款跨平台的PHP编辑器
2014/12/25 PHP
php统计数组元素个数的方法
2015/07/02 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&Firefox] 有文档和例子
2007/05/30 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
jquery插件之easing使用
2010/08/19 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
2013/04/11 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
python 判断自定义对象类型
2009/03/21 Python
列举Python中吸引人的一些特性
2015/04/09 Python
利用Python命令行传递实例化对象的方法
2016/11/02 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
python numpy格式化打印的实例
2018/05/14 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
简述python&pytorch 随机种子的实现
2020/10/07 Python
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
what is the difference between ext2 and ext3
2015/08/25 面试题
本科生详细的自我评价
2013/09/19 职场文书
电脑专业个人求职信范文
2014/02/04 职场文书
公司合作意向书
2014/04/01 职场文书
暑期社会实践证明书
2014/11/17 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
工程服务质量承诺书
2015/04/29 职场文书
MySQL 自定义变量的概念及特点
2021/05/13 MySQL
Python可视化学习之seaborn调色盘
2022/02/24 Python
Go语言grpc和protobuf
2022/04/13 Golang
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js