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

Scrapy爬取温度返回\xa0而非6°C 编码问题如何解决

问题结论

这不是编码问题:你拿到的\xa0是HTML中 (不间断空格)解析后的标准Unicode字符,出现该问题的核心原因是目标站点的温度数据由JavaScript动态渲染生成,Scrapy默认仅请求静态HTML源码,此时你定位的td#mi1元素只有占位空格,还未被JS填充温度数值。

解决方案

方案1:直接抓后端数据接口(最高效)

打开浏览器开发者工具的「网络」面板,筛选「XHR/ Fetch」请求,刷新页面后找到返回温度数据的后端接口,直接请求该接口获取结构化JSON数据,无需解析前端页面。

方案2:对接无头浏览器渲染JS

推荐使用scrapy-playwright对接无头浏览器加载渲染页面,配置步骤如下:

  1. 安装依赖
pip install scrapy-playwright
playwright install
  1. 在settings.py中添加下载器配置
DOWNLOAD_HANDLERS = {
    "http": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler",
    "https": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler",
}
# 配置无头模式启动
PLAYWRIGHT_LAUNCH_OPTIONS = {"headless": True}
  1. 发起请求时添加meta参数触发渲染
yield scrapy.Request(
    url="你的目标页面地址",
    meta={"playwright": True}
)

渲染完成后的response中即可通过你原有XPath//td[@id="mi1"]/text()提取到正确的温度数值。

可选编码配置(非当前问题核心,可用于避免后续乱码)

如果后续出现其他字符乱码问题,可在settings.py中添加全局编码配置:

FEED_EXPORT_ENCODING = 'utf-8'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:15:01