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

Scrapy爬取YellowPages时Response.css返回空数组问题求助

解决YellowPages爬取时选择器返回空数组的问题

可能原因及对应方案

1. 页面内容是JS动态渲染的

Scrapy默认fetch命令获取的是服务器返回的初始HTML,而YellowPages的商家数据多通过JavaScript动态加载,初始HTML里并不包含article.address-indicators元素。

解决方法:
用Scrapy结合Playwright获取JS渲染后的页面:

  • 安装依赖:pip install scrapy-playwright
  • 在项目settings.py中添加配置:
DOWNLOAD_HANDLERS = {
    "http": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler",
    "https": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler",
}
PLAYWRIGHT_LAUNCH_OPTIONS = {"headless": True}
  • 请求时启用Playwright:
yield scrapy.Request(
    url="https://www.yellowpages.com/search?search_term=hairdressers%20&search_location=Los%20Angeles%2C%20CA&search_type=searchbox_top",
    meta={"playwright": True}
)

2. 选择器与实际页面结构不匹配

你在浏览器开发者工具看到的元素结构,和Scrapy实际获取的页面可能不一致——比如网站反爬返回伪装页面,或者类名是动态生成的。

解决方法:
执行view(response)命令,在浏览器打开Scrapy抓取到的页面,查看真实HTML源码,重新定位选择器。比如YellowPages的商家条目通常用div.v-card或article.result作为容器,可基于此调整选择器。

3. 被反爬机制识别

即使返回200响应,网站也可能已识别出爬虫,返回无有效数据的伪装页面。

解决方法:

  • 在settings.py中添加真实请求头:
DEFAULT_REQUEST_HEADERS = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8'
}
  • 可尝试添加浏览器Cookie(先在浏览器访问目标页面,复制Cookie值):
yield scrapy.Request(
    url="https://www.yellowpages.com/search?search_term=hairdressers%20&search_location=Los%20Angeles%2C%20CA&search_type=searchbox_top",
    headers={'Cookie': '你的浏览器Cookie值'},
    meta={"playwright": True}
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:12:32