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线程锁(thread)学习示例
Dec 04 Python
Python中的字符串查找操作方法总结
Jun 27 Python
Python编程修改MP3文件名称的方法
Apr 19 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
对Python定时任务的启动和停止方法详解
Feb 19 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
简单了解python的一些位运算技巧
Jul 13 Python
Python3安装pip工具的详细步骤
Oct 14 Python
Python模拟伯努利试验和二项分布代码实例
May 27 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
字典算法实现及操作 --python(实用)
Mar 31 Python
Python 内置函数速查表一览
Jun 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
dedecms模版制作使用方法
2007/04/03 PHP
php base64 编码与解码实例代码
2017/03/21 PHP
jquery根据锚点offset值实现动画切换
2014/09/11 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
React中使用Vditor自定义图片详解
2020/12/25 Javascript
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
python抓取网页内容示例分享
2014/02/24 Python
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
解决Django中调用keras的模型出现的问题
2019/08/07 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
python实现梯度下降算法的实例详解
2020/08/17 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
Omio荷兰:预订火车、巴士和机票
2018/11/04 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
存储过程的优缺点是什么
2015/01/10 面试题
C#面试问题
2016/07/29 面试题
厨师长岗位职责
2014/03/02 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
人事任命通知书
2015/04/21 职场文书
民事起诉状范文
2015/05/19 职场文书
家电创业计划书
2019/08/05 职场文书
php中pcntl_fork详解
2021/04/01 PHP
python数字图像处理实现图像的形变与缩放
2022/06/28 Python