当前位置: 首页 > wzjs >正文

成都最好的网站建设福州电子网站建设

成都最好的网站建设,福州电子网站建设,网站网页怎么设计,制作公司网站教程一、文章立论 哔哩哔哩(B站)是当前年轻人十分喜爱的视频分享平台,以其丰富多样的内容、互动性强的社区氛围以及独特的弹幕文化深受用户喜爱。在该平台上,用户不仅可以观看各种类型的视频,如动画、游戏、科技、生活、影…

一、文章立论

哔哩哔哩(B站)是当前年轻人十分喜爱的视频分享平台,以其丰富多样的内容、互动性强的社区氛围以及独特的弹幕文化深受用户喜爱。在该平台上,用户不仅可以观看各种类型的视频,如动画、游戏、科技、生活、影视、音乐等,还可以通过弹幕和评论表达自己的观点,与其他观众进行实时交流。这种互动机制极大地增强了用户的沉浸感和参与感,使得B站成为了一个兼具娱乐性和社交属性的内容生态平台。

由于B站的弹幕与评论系统承载了大量用户的实时反馈和情感表达,对这些文本数据进行深入分析,可以挖掘出许多有价值的信息。例如,通过语义分析可以理解视频的核心立意,以及观众对内容的看法;而情感分析则能揭示用户对于某个视频的情感倾向,是正面、负面还是中立。通过大规模采集和处理这些数据,我们不仅可以研究视频的受欢迎程度,还能分析不同类型视频的受众特征、热点话题的传播规律,甚至洞察某些文化现象的演变趋势。本篇文章将介绍如何利用Python高效地批量获取B站视频的评论信息。

二、爬虫分析

通过浏览器开发者工具捕获获取评论的请求,通过搜素大法找到具体链接——https://api.bilibili.com/x/v2/reply/wbi/main

其载荷参数为

通过搜素发现oid和pagination_str中的session_id是和视频直接相关的,w_rid搜不到,应该是一个加密的密文,wts应该是一个时间戳,转为标准时间后就可以确定其确实就是一个当前时间戳。再请求发现其余参数为固定的。

再去分析其他视频的评论,发现接口是一致的,但是载荷参数不一致。

区别主要是pagination_str字段。

利用搜素大法搜素w_rid,在可疑的地方打上断点,再次请求评论,发现断点断在了

return {w_rid: at(y + a),wts: u.toString()
}

输出 at(y + a)和wts的值,长度与接口参数一致。放开断点看最新请求,加密参数与刚刚输出的一致,即找到了加密位置。其中主要的代码逻辑为:

, o = n.imgKey, i = n.subKey;if (o && i) {for (var a = (t = o + i,r = [],[46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49, 33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40, 61, 26, 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56, 59, 6, 63, 57, 62, 11, 36, 20, 34, 44, 52].forEach((function(e) {t.charAt(e) && r.push(t.charAt(e))})),r.join("").slice(0, 32)), u = Math.round(Date.now() / 1e3), s = Object.assign({}, e, {wts: u}), c = Object.keys(s).sort(), l = [], f = /[!'()*]/g, d = 0; d < c.length; d++) {var p = c[d], h = s[p];h && "string" == typeof h && (h = h.replace(f, "")),null != h && l.push("".concat(encodeURIComponent(p), "=").concat(encodeURIComponent(h)))}var y = l.join("&");return {w_rid: at(y + a),wts: u.toString()}}

通过调试得到e就是请求参数中除去w_rid和wts的一个字典。o和i的值是固定的。为了判断快速at方法,在控制台输出at("123456"),结果为e10adc3949ba59abbe56e057f20f883e,即可判断at方法即为md5算法。至此爬虫分析完毕。

三、爬虫实现

将网页的JavaScript代码扣下来之后,稍微修改,将结果封装为一个方法。

let o = "7cd084941338484aae1ad9425b84077c"
let i = "4932caff0ff746eab6f01bf08b70ac45"
var CryptoJS = require("crypto-js")
function getEncryptedParams(e){for (var a = (t = o + i,r = [],[46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49, 33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40, 61, 26, 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56, 59, 6, 63, 57, 62, 11, 36, 20, 34, 44, 52].forEach((function(e) {t.charAt(e) && r.push(t.charAt(e))})),r.join("").slice(0, 32)), u = Math.round(Date.now() / 1e3), s =Object.assign({}, e, { wts: u }),c = ["cm_from_track_id","mode","oid","pagination_str","plat","seek_rpid","type","web_location","wts"], l = [], f = /[!'()*]/g, d = 0; d < c.length; d++) {var p = c[d], h = s[p];h && "string" == typeof h && (h = h.replace(f, "")),null != h && l.push("".concat(encodeURIComponent(p), "=").concat(encodeURIComponent(h)))}var pagination_str = l[2]var y =CryptoJS.MD5(l.join("&") + a).toString()wts =  u.toString()return {y,  wts, pagination_str}
}

python代码利用excjs调用上述JavaScript代码文件获得加密结果,并用requests库发送请求获得放回信息。

import execjs
import requestsheaders = {"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","accept-language": "zh-CN,zh;q=0.9","upgrade-insecure-requests": "1","user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
}
def getEncryptedParams(e):js_codes = open("newbilibili.js", "r").read()ctx = execjs.compile(js_codes)return ctx.call("getEncryptedParams", e)params = {"oid": "22661051","type": "1","mode": "3","pagination_str": "{\"offset\":\"{\\\"type\\\":1,\\\"direction\\\":1,\\\"data\\\":{\\\"pn\\\":1}}\"}","plat": "1","web_location": "1315875"
}
encryptedParams = getEncryptedParams(params)
pagination_str = encryptedParams["pagination_str"].replace("pagination_str=", "").replace("%3A", ":")
w_rid, wts = encryptedParams["y"], encryptedParams["wts"]
url = (f"https://api.bilibili.com/x/v2/reply/wbi/main?oid={params['oid']}&type=1&mode=3&pagination_str={pagination_str}"f"&plat=1&web_location=1315875&w_rid={w_rid}&wts={wts}")
text = requests.get(url=url, headers=headers).json()
datas = text["data"]["replies"]
for data in datas:print(data["content"]["message"].replace("\n", ""))


文章转载自:

http://XBgIqgkg.mrfbp.cn
http://7WprKW6K.mrfbp.cn
http://NK6bWBNQ.mrfbp.cn
http://g75cdOjB.mrfbp.cn
http://vlN1udC5.mrfbp.cn
http://BPWXJP69.mrfbp.cn
http://ZfxWYE5D.mrfbp.cn
http://KxqWUwff.mrfbp.cn
http://uzKpk077.mrfbp.cn
http://EpzEySQn.mrfbp.cn
http://5oU8yKGT.mrfbp.cn
http://DnuaOAzb.mrfbp.cn
http://WlOThMy3.mrfbp.cn
http://t2HLUgm5.mrfbp.cn
http://kxorHPP0.mrfbp.cn
http://N9iQp730.mrfbp.cn
http://VKfdllhe.mrfbp.cn
http://rEDgP2Yn.mrfbp.cn
http://eGXlPssl.mrfbp.cn
http://Ib8td0fc.mrfbp.cn
http://OD9jfhy9.mrfbp.cn
http://nnqTmSzn.mrfbp.cn
http://UlJhaljl.mrfbp.cn
http://zFKPCaa6.mrfbp.cn
http://tW0nzeDB.mrfbp.cn
http://rChEvdq3.mrfbp.cn
http://J8RZej7V.mrfbp.cn
http://ds2o3voQ.mrfbp.cn
http://Lge4gdvI.mrfbp.cn
http://K3l4FPQX.mrfbp.cn
http://www.dtcms.com/wzjs/607977.html

相关文章:

  • 电子政务和网站建设工作的总结流量卡
  • 广西省住房和城乡建设厅网站如何快速做网站排名
  • 网站实施建设流程深圳市网站建设公司设计公司
  • 做网站ps的图片济南网站建设 力推聚搜网络
  • 2008iis 网站 打不开济南网站建设与维护
  • 电子商务网站建设策划书网站类型wordpress3.7
  • 唐山网站建设怎么样网站推广策略和营销策略
  • 网站建设订单linux建设门户网站
  • 做网站的公司苏州电销外呼软件
  • 绍兴网站建设企业国外网站免费dns
  • html怎么做网站首页如何制作app软件
  • 网站建设-好发信息网自己开公司 自己做网站吗
  • 温州网站建设wzwmwl桂平网络推广
  • 空间站 对接小程序平台入口
  • 大型的营销型网站建设建模师的就业前景
  • 网站的制作建站人网站备案 新增接入
  • 云服务器哪家最便宜朱晓宇 大庆 seo 网站建设 北京
  • 网站开发培训学费人才网站源码
  • 陕西 网站备案黄石网站建设教程
  • 工业设计相关网站在线探测网站开发语言
  • 建设手机行网站wordpress延迟加载js
  • 济南建设局seo快排公司哪家好
  • 网站上的支付链接该怎么做新网站必须做301定向吗
  • seo快速推广窍门大公开网站建设优化推广安徽
  • 重庆做网站及公众号公司网站建设 目的
  • 功能型网站开发价格郑州网站建设(智巢)
  • 深圳网站排名怎么做郑州最好的男科医院是什么医院
  • 免费网站源码大全下载微信平台制作网站开发
  • 厦门软件园网站建设宁波网站建设与设计开发
  • 网站公司必须帮备案wordpress网站重新安装插件