直接用requests拿不到瀑布流内容,因其数据由javascript动态加载;应先抓包分析xhr/fetch接口,构造带headers和cookies的请求;若接口参数动态生成或需用户交互,再选用selenium、playwright等自动化工具。

直接用 requests 拿不到瀑布流内容——因为那些数据是滚动时由 JavaScript 发起 fetch 或 XMLHttpRequest 动态插入的,初始 HTML 里压根没有。
先抓包看接口,别急着启浏览器
很多瀑布流页面的数据源其实是公开的 XHR/Fetch 接口,返回 JSON。比启动浏览器快得多,也更稳定。
- 打开 Chrome DevTools → Network → 切到 XHR 或 Fetch/XHR 标签
- 滚动页面,观察新增请求:注意 URL 是否含
page、offset、limit等分页参数 - 点开请求 → Headers → 复制
User-Agent、Referer、Cookie(登录态可能必须) - 检查 Response 是否为有效 JSON;若返回 403/401,大概率需要带
Authorization或加密参数
示例中常见错误:requests.get(url) 直接调用失败,但加了 headers 和 cookies 后正常——漏掉任一关键 header 都可能被拦截。
图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成AI能理解的专业表达。 用得越多,它越懂你:首次需要多问几句确认方向,用久了几乎一说就懂。 用得越多,它越快:缓存机制让后续对话越来越省。 RAG进化:成功案例持续入库,越跑越聪明。 输入「新手指南」查看完整功能介绍
滚动加载必须用浏览器自动化?不一定
如果接口藏得深(参数动态生成、时间戳签名、前端加密),或需触发真实用户行为(如点击“加载更多”按钮),才需要模拟滚动。
-
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")是基础操作,但不能只执行一次 - 滚动后必须等新内容渲染完成,
time.sleep(2)很脆弱——优先用WebDriverWait等待某个新元素出现 - 防无限循环:记录滚动前的
document.body.scrollHeight,两次相等再退出 - 无头模式下某些网站会降级渲染,可尝试加
--disable-blink-features=AutomationControlled参数绕过检测
Selenium vs Playwright:选哪个?
不是版本越新越好,得看实际场景。
-
Selenium生态成熟,文档多,但启动慢、对反爬敏感(navigator.webdriver === true易被识别) -
Playwright启动快、内置等待机制、默认隐藏自动化痕迹,page.goto(url, wait_until="networkidle")比 Selenium 的显式等待更稳 - 若目标站有滑块验证码或行为验证,
Playwright的route拦截 + mock 响应能力更强 - 别忽略
Pyppeteer:纯 Python、轻量,但维护不如 Playwright 活跃,适合简单任务
一个容易被忽略的点:所有浏览器自动化方案都依赖网络环境稳定性。本地跑通的脚本,部署到服务器后常因 DNS、代理、TLS 版本问题卡在 driver.get() ——建议加超时和异常重试。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










