You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scrapy爬取Zappos指定商品评论返回空结果求助

解决Scrapy爬取Zappos评论返回空的问题

问题根源

你遇到的空结果主要有两个原因:

  1. 评论是动态渲染的:Zappos的用户评论并非直接写在初始HTML里,而是页面加载后通过JavaScript异步加载渲染的,Scrapy默认请求只能拿到静态初始页面,自然抓不到评论内容。
  2. 代码细节错误:你的URL开头多了个空格,会导致请求异常;CSS选择器里用了HTML转义字符>,在Scrapy中应该直接写>。

解决方法

1. 先修正代码基础错误

把URL的开头空格去掉,同时修正CSS选择器的转义问题:

import scrapy
from scrapy import Request

class LaptopSpider(scrapy.Spider):
    name = 'cs'

    def start_requests(self):
        # 去掉URL开头的空格
        url = 'https://www.zappos.com/p/lamade-mozza-halter-pullover-black/product/9796103/color/3'
        yield Request(url, callback=self.parse)

    def parse(self, response):
        # 修正选择器的>符号,无需转义
        # 先打印响应内容,确认是否有评论相关文本
        print(response.text)
        # 这里可以先尝试找评论容器的选择器,比如实际页面的评论区类名
        products_selector = response.css('#productRecap > div.p--z > div:nth-child(3) > div > div > div > div > div.Oi-z > div::text').get()
        print(products_selector)

2. 处理动态渲染内容

如果打印response.text后搜不到评论关键词,就需要用工具渲染JavaScript页面,推荐用Scrapy官方集成的Playwright:

  • 先安装依赖:
pip install scrapy-playwright
  • 在项目的settings.py中添加配置:
DOWNLOAD_HANDLERS = {
    "http": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler",
    "https": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler",
}

PLAYWRIGHT_LAUNCH_OPTIONS = {
    "headless": True,  # 设为False可以看到浏览器运行过程,方便调试
    "timeout": 30000,
}
  • 修改爬虫代码启用Playwright渲染:
import scrapy

class LaptopSpider(scrapy.Spider):
    name = 'cs'

    def start_requests(self):
        url = 'https://www.zappos.com/p/lamade-mozza-halter-pullover-black/product/9796103/color/3'
        # 启用Playwright渲染动态页面
        yield scrapy.Request(url, callback=self.parse, meta={"playwright": True})

    def parse(self, response):
        # 这里根据渲染后的实际DOM结构调整选择器,比如找评论内容的容器
        review_items = response.css('.review-item')
        for item in review_items:
            review_text = item.css('.review-body::text').getall()
            print(''.join(review_text).strip())

3. 更高效的备选方案:抓评论API接口

打开浏览器开发者工具的Network面板,刷新页面后筛选XHR/fetch请求,找到包含商品ID或"review"关键词的接口(比如Zappos的评论API通常是带商品ID的JSON接口),直接请求该接口获取结构化的评论数据,这种方式比渲染页面速度更快。

注意事项

  • Zappos有反爬机制,爬取时要设置合理的User-Agent请求头,控制请求频率,避免被封禁IP。
  • 渲染页面后,要重新用浏览器的开发者工具确认评论区的DOM结构,调整对应的CSS选择器。

内容的提问来源于stack exchange,提问作者Alexkk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:01:14