2024-06-17测试的关注列表导出方法,可以导出成csv或者json。
可能相关属性名、类名有些区别,需要自行探索。方法没有技术含量,就是JavaScript。
- 登录抖音网页版,打开个人页,找到关注。点开小窗口后,一直往下拉,加载所有的粉丝。
- 打开F12,运行下面的脚本。
fans = []
// 找到fan列表
var element = document.querySelector('[data-e2e="user-fans-container"]');
// 找到gq_元素
gqs = element.querySelectorAll('[class^="gq_"]');
// 定义结果类
class FanClass {
constructor(fan_href, fan_name) {
this.fan_href = fan_href;
this.fan_name = fan_name;
}
}
for (let gq of gqs) {
// 包含关注人信息的节点在gq的前2个节点
fan = gq.previousElementSibling.previousElementSibling;
fan_href = fan.querySelector("div > a").getAttribute("href");
// 获取name
tag_name = fan.childNodes[1]
tag_span = tag_name.childNodes[0]
while (tag_span.hasChildNodes()) {
tag_span = tag_span.firstChild;
}
fan_name = tag_span.textContent.trim()
// 新建实例
fan_class = new FanClass(fan_href, fan_name)
fans.push(fan_class)
}
// 输出
for (let fan of fans) {
console.log(fan.fan_name, ",", fan.fan_href)
}
// 输出成表格
datas = []
for (let fan of fans) {
datas.push([fan.fan_name, fan.fan_href])
}
console.table(datas)
// 保存为json
datas = []
for (let fan of fans) {
datas.push({ "name": fan.fan_name, "href": fan.fan_href })
}
jsonString = JSON.stringify(datas, null, 2);
blob = new Blob([jsonString], { type: "application/json;charset=utf-8" });
url = URL.createObjectURL(blob);
link = document.createElement('a');
link.href = url;
link.download = 'data.json';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// 保存为csv
datas = []
for (let fan of fans) {
datas.push([fan.fan_name, fan.fan_href])
}
var csvString = datas.map(row => row.join(',')).join('\n');
var blob = new Blob([csvString], { type: "text/csv;charset=utf-8" });
var url = URL.createObjectURL(blob);
var link = document.createElement('a');
link.href = url;
link.download = 'data.csv';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
这样就可以了,省了点时间。