总的思想:

任务一 采集某站 综合热门

任务二 采集某站 排行榜下的全站

任务三 采集排行榜下的动画

无加密,无非就是编码的问题

任务一做法:

经检查网页后 发现里面的可以直接从network中拿到api_ur,所以直采集api就可以拿到数据,其中里面只有播放量,评论。没有点赞量,所以点赞量要点进视频里面才能获取的到,所以这里需要找到另外视频页面的url,其中api里面已经包括其中的参数了 直接拿就好了

任务二和任务三的做法雷同:

首先检查network中是否存在api,发现没有api,只能采集网页了。然后排行榜里面的页面也只是含有播放量,评论,没有点赞。所以还需要进入视频页面拿到点赞量,视频页面的url也可以从排行榜这个页面拿到。

这一次要分享的内容是我帮他人采集的是某站里面的一个热搜排行榜,之前没有采集过某站,以为某站是有反爬功能的,还有就是说什么采集的弹幕,弹幕无非就算地下的哪些评论么,经过检查发现好像并没有什么加密的。没加密的,都是挺简单的。废话不说了! 看一下本次要采集的内容!

具体详细过程我也不能仔细说,不能发不出来,你们可以到知乎里面看看地址为:

具体代码:

#-*- coding:utf-8 -*-
import requests
import json
# 导入urllib与lxml库
from bs4 import BeautifulSoup
from lxml import etree
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
false = False
null = None
# 画图
def drawHistogram(x0, y1, y2, label1, label2, title):matplotlib.rc("font", family='MicroSoft YaHei')list1 = y1  # 柱状图第一组数据list2 = y2  # 柱状图第二组数据length = len(list1)x = np.arange(length)  # 横坐标范围listDate = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]plt.figure()total_width, n = 1, 2  # 柱状图总宽度,有几组数据width = total_width / n  # 单个柱状图的宽度x1 = x - width / 2  # 第一组数据柱状图横坐标起始位置x2 = x1 + width  # 第二组数据柱状图横坐标起始位置plt.title(title)  # 柱状图标题# plt.xlabel("星期")   # 横坐标label 此处可以不添加plt.ylabel("数量")  # 纵坐标labelplt.bar(x1, list1, width=width, label=label1)plt.bar(x2, list2, width=width, label=label2)plt.xticks(x, listDate, rotation=30)  # 用星期几替换横坐标x的值plt.legend()  # 给出图例plt.show()# 排行榜 总榜 动画
def get_data(url, name):headers = {'cookie': "buvid3=51EECB8F-B2B4-F648-B16B-3485D6761C0437292infoc; b_nut=1663560437; i-wanna-go-back=-1; _uuid=42CBCB23-A539-DE8E-61B3-106A47517E4CC36605infoc; buvid4=1D9BE17F-5D9E-9B18-FD37-0F39ECBB843038064-022091912-JDMlVHKZXid/ggr/2NfjCA==; fingerprint=22087719bd29558ec54024d294426d83; buvid_fp_plain=undefined; nostalgia_conf=-1; rpdid=|(J|)l)R)R|k0J'uYYJlY|RlJ; DedeUserID=1639478777; DedeUserID__ckMd5=d8f72f04917d4ed9; buvid_fp=cd9174fe898e94313f12161d55f5c6d4; b_ut=5; SESSDATA=99311495,1679456980,62d1c*91; bili_jct=cda1af7ea2aebcb2d84117106aeb7b9c; b_lsid=B7F1AFEA_183724A44BE; CURRENT_FNVAL=4048; sid=75325who; bp_video_offset_1639478777=709429817518325800; innersign=0; PVID=12",'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'}# 爬取网页的网址,此网址仅限于本实训使用url = url# 请求网页获取网页源码response = requests.get(url=url, headers=headers)tree = etree.HTML(response.text)title = tree.xpath('//*[@class="title"]/text()')print(title)# 播放量 评论量bofangliang = tree.xpath('//*[@class="data-box"]/text()')# print(bofangliang)# 播放量 点赞量x = []y1 = []y2 = []for i in range(len(bofangliang)):if(i==40):breakif((i+2)%2==0):y1.append(bofangliang[i].strip())# 除去万for i in range(len(y1)):if ("万" not in y1[i]):y1[i] = int(("".join(list(filter(str.isdigit, y1[i])))))else:y1[i] = int(str("".join(list(filter(str.isdigit, y1[i])))) + "000")# 找出点赞的url# 全站排行榜 和动画 排行榜点赞的urlurl = tree.xpath('//*[@class="img"]/a/@href')for i in range(len(url)):if(i==20):breakpraise_url = 'https://www.bilibili.com/video/' + str(url[i].split('/')[-1])y2.append(get_praise_1(praise_url, '//span[@class="info-text"]/text()'))# 画图print(y1)print(y2)drawHistogram(x, y1, y2, '播放量', '点赞量', name)def get_api_data():# 综合热门前20headers = {'cookie': "buvid3=51EECB8F-B2B4-F648-B16B-3485D6761C0437292infoc; b_nut=1663560437; i-wanna-go-back=-1; _uuid=42CBCB23-A539-DE8E-61B3-106A47517E4CC36605infoc; buvid4=1D9BE17F-5D9E-9B18-FD37-0F39ECBB843038064-022091912-JDMlVHKZXid/ggr/2NfjCA==; fingerprint=22087719bd29558ec54024d294426d83; buvid_fp_plain=undefined; nostalgia_conf=-1; rpdid=|(J|)l)R)R|k0J'uYYJlY|RlJ; DedeUserID=1639478777; DedeUserID__ckMd5=d8f72f04917d4ed9; buvid_fp=cd9174fe898e94313f12161d55f5c6d4; b_ut=5; SESSDATA=99311495,1679456980,62d1c*91; bili_jct=cda1af7ea2aebcb2d84117106aeb7b9c; b_lsid=B7F1AFEA_183724A44BE; CURRENT_FNVAL=4048; sid=75325who; bp_video_offset_1639478777=709429817518325800; innersign=0; PVID=12",'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'}hot_url = "https://api.bilibili.com/x/web-interface/popular"param = {'ps': 20,'pn': 1}res_0 = requests.get(url=hot_url, data=json.dumps(param), headers=headers)# json解析data = res_0.json()# print(data)# 构造数据y1 = []y2 = []x = []for i in range(len(data['data']['list'])):x.append(data['data']['list'][i]['title'])y1.append(data['data']['list'][i]['stat']['view'])# 获取点赞量url_praise = 'https://www.bilibili.com/video/' + str(data['data']['list'][i]['bvid']) + '/'y2.append(get_praise_0(url_praise, '//span[@class="info-text"]/text()'))print(x)print("播放量"+str(y1))print("点赞量" + str(y2))# 获取点赞量drawHistogram(x, y1, y2, '播放量', '点赞量', '综合热门')# 综合热门的点赞量
def get_praise_0(url, data):headers = {'cookie': "buvid3=51EECB8F-B2B4-F648-B16B-3485D6761C0437292infoc; b_nut=1663560437; i-wanna-go-back=-1; _uuid=42CBCB23-A539-DE8E-61B3-106A47517E4CC36605infoc; buvid4=1D9BE17F-5D9E-9B18-FD37-0F39ECBB843038064-022091912-JDMlVHKZXid/ggr/2NfjCA==; fingerprint=22087719bd29558ec54024d294426d83; buvid_fp_plain=undefined; nostalgia_conf=-1; rpdid=|(J|)l)R)R|k0J'uYYJlY|RlJ; DedeUserID=1639478777; DedeUserID__ckMd5=d8f72f04917d4ed9; buvid_fp=cd9174fe898e94313f12161d55f5c6d4; b_ut=5; SESSDATA=99311495,1679456980,62d1c*91; bili_jct=cda1af7ea2aebcb2d84117106aeb7b9c; b_lsid=B7F1AFEA_183724A44BE; CURRENT_FNVAL=4048; sid=75325who; bp_video_offset_1639478777=709429817518325800; innersign=0; PVID=12",'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'}response = requests.get(url=url, headers=headers)# print(response.text)# response=urllib.request.urlopen(url=url)# # time.sleep(5)# # 将文本转化为HTML元素树tree = etree.HTML(response.text)praise = tree.xpath(data)#print(praise)if("万" not in praise[0]):temp = int(("".join(list(filter(str.isdigit, praise[0])))))else:temp = int(str("".join(list(filter(str.isdigit, praise[0])))) + "000")return temp#  排名全站和排名动画的点赞量
def get_praise_1(url, data):headers = {'cookie': "buvid3=51EECB8F-B2B4-F648-B16B-3485D6761C0437292infoc; b_nut=1663560437; i-wanna-go-back=-1; _uuid=42CBCB23-A539-DE8E-61B3-106A47517E4CC36605infoc; buvid4=1D9BE17F-5D9E-9B18-FD37-0F39ECBB843038064-022091912-JDMlVHKZXid/ggr/2NfjCA==; fingerprint=22087719bd29558ec54024d294426d83; buvid_fp_plain=undefined; nostalgia_conf=-1; rpdid=|(J|)l)R)R|k0J'uYYJlY|RlJ; DedeUserID=1639478777; DedeUserID__ckMd5=d8f72f04917d4ed9; buvid_fp=cd9174fe898e94313f12161d55f5c6d4; b_ut=5; SESSDATA=99311495,1679456980,62d1c*91; bili_jct=cda1af7ea2aebcb2d84117106aeb7b9c; b_lsid=B7F1AFEA_183724A44BE; CURRENT_FNVAL=4048; sid=75325who; bp_video_offset_1639478777=709429817518325800; innersign=0; PVID=12",'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'}response = requests.get(url=url, headers=headers)tree = etree.HTML(response.text)praise = tree.xpath(data)if(len(praise)==0):praise = tree.xpath('//*[@class="video-toolbar-content_item video-toolbar-hover"]/text()')# print(praise)for i in range(len(praise)):praise[i] = praise[i].strip()temp = praise[2]# print(temp)else:temp = praise[0]# print(praise)if("万" not in temp):temp = int(("".join(list(filter(str.isdigit, temp)))))else:temp = int(str("".join(list(filter(str.isdigit, temp)))) + "000")# print(temp)return temp# 综合热门
# get_api_data()# # 全站排行榜前20
# quanzhan_url = 'https://www.bilibili.com/v/popular/rank/all'
# get_data(quanzhan_url, '排名全站')# # 动画排行榜前20
donghua_url = 'https://www.bilibili.com/v/popular/rank/douga'
get_data(donghua_url, '排名动画')

运行结果:

采集某站热搜排行榜(阅读量,评论量和点赞量)相关推荐

  1. Python爬虫以及数据可视化分析之某站热搜排行榜信息爬取分析

    目录 前言 一,确定目标 二,发送请求 三, 解析数据 四, 保存数据 pyecharts进行可视化 "某站"数据排名前10视频类型 "某站"标题标签可视化 & ...

  2. 微信推出热搜排行榜,微博压力山大?

    [微信热词功能]无论是iOS还是Android用户,在手机微信上点击上方的搜索框,然后点击[资讯],就能看到最近热门的关键词以及对应的微信指数.点击关键词,就能看到相关的文章. 这一热词功能,不难让人 ...

  3. springboot+redis实现微博热搜排行榜

    springboot+redis实现微博热搜排行榜 技术模拟思路: 采用26个英文字母来实现排行,随机为每个字母生成一个随机数作为score 为了更好的体验,先做几件事: 先初始化1个月的历史数据 定 ...

  4. 各大平台热搜排行榜原型

    前言:腾讯.新浪微博等平台都有一个热搜的功能,目的是让用户看到最近一段时间网友们都在搜索什么,以便实时掌握热点资讯.热搜排行榜的算法其实非常简单,用C语言就可以写出来. 编程思想:每个被搜索的词条都是 ...

  5. SparkStreaming案例:模拟百度热搜排行榜

    pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http: ...

  6. html搜狐热搜列表仿写,织梦列表页获取热搜排行榜文章

    001 //列表页获取网友热搜 24小时 002 function GetHotSearch($tid){ 003 global $dsql; 004 $time = time() - 86400; ...

  7. 这位90后女博导上热搜了!曾被Nature主编点赞,放弃百万英镑年薪回国任教

    来源:新智元本文约1300字,建议阅读5分钟本文为你介绍90后美女学霸刘明侦. [ 导读 ] 你可能听过这个90后美女学霸!她就是刘明侦,一位曾被Nature主编点赞过的女博士,近期又火了--如今已为 ...

  8. 覆盖近2亿篇论文还免费!沈向洋旗下团队「读论文神器」登B站热搜

      视学算法报道   编辑:小咸鱼 好困 [新智元导读]无意中发现B站上有个叫ReadPaper的在线论文阅读笔记神器冲上了热榜!ReadPaper由沈向洋博士创办的IDEA旗下团队研发,其收录了近2 ...

  9. 又一废话中文编程力作,UP主「三姑六婆计算器」登B站热搜!

最新文章

  1. mysql 创建用户与授权
  2. python3安装pip3-python3及pip3安装
  3. 国内主流IT公司Field Sales销售薪资 来自著名猎头公司内部信息 给IT的朋友们知道个行情 - 天涯...
  4. Allegro跨分割检查
  5. springboot如何盈利_彻底透析SpringBoot jar可执行原理
  6. 失眠害死人-jQueryAJAX
  7. 2018年最佳深度学习书单
  8. oracle10g rac升级到10.2.0.5
  9. 1.1为什么选择序列模型
  10. Evaluate the Malignancy of Pulmonary Nodules Using the 3D Deep Leaky Noisy-or Network 论文阅读
  11. 3.2 如何判断Java对象的存活
  12. c语言清华大学谭浩强笔记,(完整)C语言谭浩强学习笔记.doc
  13. Nifi操作Redis
  14. 普通化学三个单元总结
  15. SDUTACM[1160]某年某月的天数
  16. 2017年中秋前记录
  17. ubuntu, xftp 命令安装 testlink (xampp-linux-x64-5.5.3,Linux Un 5.4.0-39)
  18. 请教modelsim中vlog的用法
  19. vue学习记录 coderwhy d3
  20. 数据库三范式设计习题

热门文章

  1. gradle安装配置详细教程(windows环境)
  2. 我用ChatGPT写2023高考语文作文(七):上海卷
  3. Nexus SSR激活
  4. Android 图片动画
  5. 你知道TCP协议、IP协议、HTTP协议分别在哪一层吗?
  6. 2022机械员-通用基础(机械员)上岗证题目及答案
  7. CollectGarbage函数--JS清理垃圾,内存释放
  8. WCF分布式开发常见错误(18):Binding validation failed 绑定协议验证失败
  9. Android——体重计算器
  10. PHP微信抢红包的算法