const { chromium, firefox, webkit, devices } = require(
'playwright'
);
(async () => {
const browser = await chromium.launch({
headless:
true
,
});
try
{
const context = await browser.newContext({
userAgent:
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36'
});
const page = await context.newPage();
await page.route(
'**/*'
, (route) => {
const url = route.request().url();
const request = route.request();
const resourceType = request.resourceType();
if
(resourceType ==
'image'
|| resourceType ==
'media'
) {
route.abort();
}
else
{
route.
continue
();
}
});
await page.goto(
'https://live.douyin.com/6096197105'
);//改成自己想看的主播直播地址
await page.waitForTimeout(1000 * 5);
const element = await page.locator(
'.basicPlayer'
);
await element.waitFor({ timeout: 1000 * 5 });
const text = await element.textContent();
if
(text.includes(
'直播已结束'
)){
console.log(
'直播已结束,退出程序....'
);
await browser.close();
return
;
}
await page.waitForSelector(
'.webcast-chatroom___item-wrapper'
);
console.log(
'页面加载完成....'
);
await page.evaluate(() => {
const elements = document.querySelectorAll(
'.basicPlayer'
);
elements.forEach(element => {
element.remove();
});
});
let
init_text =
null
;
setInterval(async () => {
const elements = await page.$$(
'.webcast-chatroom___item-wrapper'
);
let
texts = [];
for
(
let
element of elements) {
const text = await element.innerText();
texts.push(text);
}
if
(init_text ==
null
) {
texts.map(x => console.log(x));
}
else
{
const diff1 = texts.filter(item => !init_text.includes(item));
diff1.map(x => console.log(x));
}
init_text = texts;
}, 1000);
}
catch
(error) {
console.log(
'出现错误:'
, error);
await browser.close();
}
})();