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字符串替换实例分析
May 11 Python
用python结合jieba和wordcloud实现词云效果
Sep 05 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
Jan 23 Python
理想高通滤波实现Python opencv示例
Jan 30 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
python数据预处理之数据标准化的几种处理方式
Jul 17 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 Python
Python编程快速上手——正则表达式查找功能案例分析
Feb 28 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
Python configparser模块操作代码实例
Jun 08 Python
python新手学习使用库
Jun 11 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 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获取Google AJAX Search API 数据的代码
2010/03/12 PHP
一个PHP的String类代码
2010/04/20 PHP
php动态添加url查询参数的方法
2015/04/14 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
农历与西历对照
2006/09/06 Javascript
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
Vue基本使用之对象提供的属性功能
2019/04/30 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
django中的setting最佳配置小结
2017/11/21 Python
Python之循环结构
2019/01/15 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
vue实现倒计时功能
2021/03/24 Vue.js
禁毒宣传工作方案
2014/05/23 职场文书
消防安全宣传口号
2014/06/10 职场文书
培训通知
2015/04/17 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang