前言
网易云课堂(study.163.com)页面是动态渲染的,浏览器检查元素能看到
但是requests + BeautifulSoup 抓不到,因为HTML 源码里没有这些内容
所以我们需要使用 Playwright(或 Selenium)才能抓到真实内容
准备工作
先安装库
pip install playwright
playwright install
然后运行脚本,执行的时候会出现一个谷歌浏览器,让它开启不要关掉它
from playwright.sync_api import sync_playwright
url = "https://study.163.com/course/introduction.htm?courseId=1213365801#/courseDetail?tab=1"
with sync_playwright() as p:
browser = p.chromium.launch(headless=False) # 看到真实加载过程
page = browser.new_page()
page.goto(url)
# 网易课程需要等待渲染成功(非常关键,否则抓不到)
page.wait_for_selector(".ksname")
# 抓取所有 class="ksname" 的 title 文本
titles = page.eval_on_selector_all(
".ksname",
"els => els.map(e => e.getAttribute('title'))"
)
for i, t in enumerate(titles, 1):
print(i, t)
browser.close()
效果

什么必须用 Playwright?
因为 study.163.com 的页面是:
-
用 Vue/React 动态加载
-
内容是 AJAX 请求回来后插入 DOM
-
requests 获取到的源码里完全没有
.ksname



没有回复内容