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

如何使用Scrapy提取未被<div>包裹的HTML卧室数量数据

解决方案

问题原因

你的代码用::text.get()只会返回匹配到的第一个文本节点,而目标数字1是目标div下的第三个文本节点(前两个是SVG标签后的空白字符、"Chambres"文本),所以无法直接获取到数字。

可行方案

方案1:CSS选择器+文本过滤

先获取目标div下的所有文本节点,再过滤出有效数字文本:

# 获取目标div下的所有文本内容
text_nodes = house_listing.css('.search-results-listings-list__item-description__characteristics__item:contains("Chambres") ::text').getall()
# 过滤掉空白和"Chambres",提取剩余的有效数字文本
bedrooms_info = next((t.strip() for t in text_nodes if t.strip() and t.strip() != "Chambres"), None)
bedrooms = self.extract_number(bedrooms_info) if bedrooms_info else None

方案2:XPath直接定位目标文本节点

用XPath精准定位到"Chambres"所在div之后的最后一个文本节点:

# 定位到包含Chambres的父div,取其最后一个文本节点
bedrooms_info = house_listing.xpath('.//div[contains(@class, "search-results-listings-list__item-description__characteristics__item") and .//div[text()="Chambres"]]/text()[last()]').get()
# 去除文本前后的空白字符
if bedrooms_info:
    bedrooms_info = bedrooms_info.strip()
bedrooms = self.extract_number(bedrooms_info) if bedrooms_info else None

说明

你的extract_number方法逻辑正常,只要能获取到"1"这类纯数字文本,就能正确提取出整数1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 11:07:28