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中使用模块的教程
Apr 27 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
Python3一行代码实现图片文字识别的示例
Jan 15 Python
Python操作MySQL数据库的三种方法总结
Jan 30 Python
如何优雅地处理Django中的favicon.ico图标详解
Jul 05 Python
Python常见排序操作示例【字典、列表、指定元素等】
Aug 15 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
pandas.cut具体使用总结
Jun 24 Python
在Pandas中处理NaN值的方法
Jun 25 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
Apr 25 Python
python实现画图工具
Aug 27 Python
Python进行特征提取的示例代码
Oct 15 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
1 Tube Radio
2021/03/02 无线电
一个简单的PHP入门源程序
2006/10/09 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
PHP 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
2019/01/31 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
Python 列表反转显示的四种方法
2020/11/16 Python
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
DBA的职责都有哪些
2012/05/16 面试题
网站设计师的岗位职责
2013/11/21 职场文书
银行演讲稿范文
2014/01/03 职场文书
狼和鹿教学反思
2014/02/05 职场文书
环保倡议书怎么写
2014/05/16 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
历史博物馆观后感
2015/06/05 职场文书
2015年国庆节寄语
2015/08/17 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
《风不能把阳光打败》读后感3篇
2020/01/06 职场文书
MySQL七种JOIN类型小结
2021/10/24 MySQL