Update Up

This commit is contained in:
cluntop
2026-02-27 01:39:08 +08:00
parent f250bb188c
commit f215635348
+11 -9
View File
@@ -40,30 +40,32 @@ async def main():
# 移除不可靠的 networkidle,使用默认导航机制
await page.goto(url)
# 定位目标:统一 <div class="content-gallery content-gallery--live-listing"> 数组
# 定位目标:跳过 skeleton 骨架屏,直接锁定在线主播节点
try:
# 显式等待外层列表容器及内部 item 元素渲染到 DOM 中(最长容忍 10 秒)
# 【核心修正】:显式等待真实数据的 CSS 节点渲染到 DOM 中(最长容忍 10 秒)
# 统一 <div class="content-gallery content-gallery--live-listing"> 数组 和 <div class="content-gallery__item">
await page.wait_for_selector(".content-gallery--live-listing .content-gallery__item", timeout=10000)
except Exception:
# 如果 10 秒后目标节点仍未出现,说明确实到达了没有数据的最后一页
print(f"{page_num} 页未检测到有效在线主播数据,翻页结束。\n")
break
# 每二次数组截胡 <div class="content-gallery__item">&&</div>
# 此时 DOM 中必定已有数据,安全执行并集提取
# 每二次数组截胡 <div class="content-gallery__item">
elements = await page.locator(".content-gallery--live-listing .content-gallery__item").all()
for element in elements:
# 抓取标题与名字:<span class="cam-tile__title">&&</span> 或 <span class="cam-tile__personal-info">
title_loc = element.locator(".cam-tile__title, .cam-tile__personal-info")
# 抓取标题与名字:兼容 .cam-tile__title 或 .cam-tile__details
title_loc = element.locator(".cam-tile__title, .cam-tile__details")
if await title_loc.count() > 0:
title = await title_loc.first.inner_text()
else:
title = "未知用户"
# 抓取 href 跳转链接:<a href="&&" 对应 class="cam-tile"
href_loc = element.locator("a.cam-tile")
if await href_loc.count() > 0:
href = await href_loc.first.get_attribute("href")
# 抓取 href 跳转链接:对应 class="cam-tile" 等于跳转链接
a_loc = element.locator("a.cam-tile")
if await a_loc.count() > 0:
href = await a_loc.first.get_attribute("href")
else:
href = ""