简而言之:在 Scrapy 中使用 JavaScript 并不总是需要浏览器。首先检查原始响应、网络请求和嵌入式页面状态;仅当目标数据确实依赖于浏览器执行时,才添加 scrapy-playwright,然后有针对性地控制等待、交互、清理和并发。
在 Scrapy 中使用 JavaScript,意味着对于那些所需数据只有在客户端代码运行后才会出现的页面,需要添加浏览器执行环节。实际目标并非渲染每个页面,而是找出获取数据的成本最低且最可靠的途径:原始 HTML、JSON 请求、嵌入的 JavaScript 对象,或者仅在必要时使用浏览器构建的 DOM。
这一区别至关重要,因为 Scrapy 的下载器接收的是服务器的响应,而 Chrome 或 Firefox 可能会在此之后发出额外请求并修改文档。因此,一个 React、Vue 或 Angular 页面在开发者工具中可能看起来已经完整,尽管 response.text 实际上仅包含一个应用程序外壳。
本指南首先从“浏览器最后”的诊断方法入手,随后针对真正需要执行的请求构建一个针对性的 scrapy-playwright 工作流。 您还将了解如何使用基于条件的等待、处理点击和会话状态、比较渲染选项,以及在生产环境中保持动态爬虫的稳定性。最终形成的工作流将在可能的情况下尽可能保留 Scrapy 高效的 HTTP 管道,同时不会假装每个现代网站仅凭静态标记就能被爬取。




