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输出PowerPoint(ppt)文件中全部文字信息的方法
Apr 28 Python
Python列表和元组的定义与使用操作示例
Jul 26 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
Feb 08 Python
python互斥锁、加锁、同步机制、异步通信知识总结
Feb 11 Python
对Python3中的input函数详解
Apr 22 Python
python 编写简单网页服务器的实例
Jun 01 Python
Python中shapefile转换geojson的示例
Jan 03 Python
python爬取内容存入Excel实例
Feb 20 Python
Pytorch加载部分预训练模型的参数实例
Aug 18 Python
pymysql模块的操作实例
Dec 17 Python
Python彻底删除文件夹及其子文件方式
Dec 23 Python
python变量的作用域是什么
May 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
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
JavaScript 隐性类型转换步骤浅析
2018/03/15 Javascript
Vue infinite update loop的问题解决
2019/04/23 Javascript
vue实现全匹配搜索列表内容
2019/09/26 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
微信小程序单选框自定义赋值
2020/05/26 Javascript
Vue3为什么这么快
2020/09/23 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
基于python实现复制文件并重命名
2020/09/16 Python
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
.NET面试题:什么是反射
2016/09/30 面试题
LINUX下线程,GDI类的解释
2012/04/17 面试题
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
2014年作风建设心得体会
2014/10/22 职场文书
百日宴上的祝酒词
2015/08/10 职场文书
《草船借箭》教学反思
2016/02/23 职场文书