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由__dict__和dir()引发的一些思考
Oct 30 Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 Python
Python基本socket通信控制操作示例
Jan 30 Python
Python3中函数参数传递方式实例详解
May 05 Python
python利用多种方式来统计词频(单词个数)
May 27 Python
Django框架使用内置方法实现登录功能详解
Jun 12 Python
详解Python3中setuptools、Pip安装教程
Jun 18 Python
python 生成任意形状的凸包图代码
Apr 16 Python
如何理解python中数字列表
May 29 Python
基于Python实现2种反转链表方法代码实例
Jul 06 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 02 Python
python使用matplotlib绘制图片时x轴的刻度处理
Aug 30 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 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
php smarty函数扩展
2010/03/15 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
js给selected添加options的方法
2015/05/06 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
如何理解委托
2012/01/06 面试题
酒店保洁主管岗位职责
2013/11/28 职场文书
餐饮收银员岗位职责
2014/02/07 职场文书
《最可爱的人》教学反思
2014/02/14 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
科技活动总结范文
2015/05/11 职场文书
红色经典观后感
2015/06/18 职场文书
网络研修随笔感言
2015/11/18 职场文书
Python anaconda安装库命令详解
2021/10/16 Python
室外天线与收音机天线杆接合方法
2022/04/05 无线电