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中精确输出JSON浮点数的方法
Apr 18 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
Python 常用的安装Module方式汇总
May 06 Python
Python实现的弹球小游戏示例
Aug 01 Python
Python 列表理解及使用方法
Oct 27 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
Python 实现交换矩阵的行示例
Jun 26 Python
Django时区详解
Jul 24 Python
Python获取时间戳代码实例
Sep 24 Python
python中判断文件结束符的具体方法
Aug 04 Python
MATLAB 全景图切割及盒图显示的实现步骤
May 14 Python
Python图片检索之以图搜图
May 31 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
YII框架常用技巧总结
2019/04/27 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
jQuery 动态酷效果实现总结
2009/12/27 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
jquery层次选择器的介绍
2019/01/18 jQuery
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
python使用7z解压apk包的方法
2015/04/18 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
python仿抖音表白神器
2019/04/08 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
HTML5的hidden属性兼容老浏览器的方法
2014/04/23 HTML / CSS
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
教师节促销活动方案
2014/02/14 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
工程主管竞聘书
2015/09/15 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
python scrapy简单模拟登录的代码分析
2021/07/21 Python
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android
Golang Web 框架Iris安装部署
2022/08/14 Python