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 实现文件的递归拷贝实现代码
Aug 02 Python
python开发之基于thread线程搜索本地文件的方法
Nov 11 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
Aug 08 Python
pandas 空的dataframe 插入列名的示例
Oct 30 Python
利用Pycharm断点调试Python程序的方法
Nov 29 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
Jun 03 Python
python Tkinter的图片刷新实例
Jun 14 Python
python 图像处理画一个正弦函数代码实例
Sep 10 Python
python内置函数sorted()用法深入分析
Oct 08 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 Python
Python脚本调试工具安装过程
Jan 11 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中几个常用的魔术常量
2012/02/23 PHP
php中OR与|| AND与&&的区别总结
2013/10/26 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
PHP数组游标实现对数组的各种操作详解
2016/01/26 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
javascript json2 使用方法
2010/03/16 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
2013/03/19 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
原生javascript实现隔行换色
2015/01/04 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
React和Vue中监听变量变化的方法
2018/11/14 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
python实现一组典型数据格式转换
2018/12/15 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
详解Python是如何实现issubclass的
2019/07/24 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
python内打印变量之%和f的实例
2020/02/19 Python
英国女装网上商店:I Saw It First
2018/10/18 全球购物
公积金转移接收函
2014/01/11 职场文书
医院节能减排方案
2014/06/13 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
配置nginx负载均衡
2022/05/06 Servers
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技