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

如何在Scrapy中提取HTML片段内的全部文本?

提取HTML片段文本并使用Scrapy解析的方法

解决步骤

  • 第一步:解析AJAX返回的JSON数据,拼接完整HTML片段
    data["values"]是拆分后的HTML字符串数组,需要先将其拼接成完整的HTML内容,避免解析出错。
  • 第二步:用Scrapy的Selector解析HTML片段
    Scrapy的Selector类支持直接传入HTML字符串创建选择器,无需依赖完整的Response对象,完全适配你的场景。

代码示例

import json
from scrapy import Selector

# 模拟AJAX请求获取的响应文本
ajax_response = '''{ 
  "data":{ 
          "label": "description", 
          "values":  ["<p class=\"description\">" 
                "someting" 
                "<br>" 
                "<br>" 
                "<b>mytitle_1</b>" 
                "<br>" 
                "<br>" 
                "something_1" 
                "<br>" 
                "<br>" 
                "<b>mytitle_2</b>" 
                "<br>" 
                "<br>" 
                "something_2" 
            "</p>"]} 
    } 
'''

# 解析JSON数据
parsed_data = json.loads(ajax_response)
# 拼接values数组中的HTML片段为完整字符串
html_content = ''.join(parsed_data['data']['values'])

# 创建Scrapy选择器解析HTML
selector = Selector(text=html_content)
# 提取所有文本节点
raw_text_list = selector.xpath('//text()').getall()
# 清理文本:去除空白字符并拼接成最终内容
cleaned_full_text = ' '.join([text.strip() for text in raw_text_list if text.strip()])

print(cleaned_full_text)

说明

  • 拼接操作:确保HTML结构完整,让Selector能正确识别节点。
  • Selector用法:和Scrapy处理网页Response的语法完全一致,支持xpath、css选择器提取文本。
  • 文本清理:过滤掉多余的换行、空格,得到整洁的纯文本内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:35:36