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

Scrapy提取文本仅返回\r\n?如何获取无HTML标签内容?

问题解答

为什么提取文本仅返回\r\n?

Scrapy的CSS选择器中,::text只会提取当前匹配元素直接包含的文本节点。在你的HTML结构里,<section>标签本身没有直接包含有效文本,只有换行、缩进这类空白字符;所有实际内容都在它的子元素(<h3>、<li>)中,所以用.profile-practical-information section::text只能拿到<section>自身的空白文本\r\n。

如何获取无多余HTML标签的内容?

提供两种常用解决方案:

方法1:CSS选择器提取所有后代文本并清理

通过在选择器中添加空格,匹配<section>下所有后代元素的文本节点,再过滤空白内容并拼接:

# 获取所有文本节点
text_fragments = response.css('.profile-practical-information section ::text').getall()
# 过滤空白并拼接成完整文本
clean_content = ' '.join([fragment.strip() for fragment in text_fragments if fragment.strip()])

执行后会得到:Types of sessions Face to Face - Long Term Face to Face - Short Term

方法2:XPath的string()方法直接提取

利用XPath的string(.)方法,直接获取节点下所有文本内容(自动拼接),再去除首尾空白:

clean_content = response.xpath('//div[@class="profile-practical-information tab-pane"]/section').xpath('string(.)').get().strip()

该方法会保留文本的层级换行(如果需要可以进一步处理换行符)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:27:13