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

如何用Scrapy拆分td标签中span前后文本存入from和to字段?

解决方案

你可以通过精准定位文本节点的方式,直接提取<span>前后的内容,无需手动拆分字符串。具体修改如下:

修改后的爬虫代码

import scrapy
from ..items import TestItem
from scrapy.loader import ItemLoader

class TestSpider(scrapy.Spider):
    name = 'test'

    def parse(self, response):
        items = response.xpath('//*[@id="12"]/div/div/div[2]/table/tbody/tr')
        for l in items:
            il = ItemLoader(item=TestItem(), selector=l)
            # 提取<span>前的文本,用normalize-space去除多余空白
            il.add_xpath('from', 'td[2]/text()[1]/normalize-space()')
            # 提取<span>后的文本
            il.add_xpath('to', 'td[2]/text()[2]/normalize-space()')
            yield il.load_item()

原理说明

  • td[2]/text()[1]:定位到第二个<td>下的第一个文本节点(即<span>前面的"London")
  • td[2]/text()[2]:定位到第二个<td>下的第二个文本节点(即<span>后面的"Prague")
  • normalize-space():自动去除文本前后的空格、换行等空白字符,避免提取到无效内容

如果遇到页面中文本节点顺序特殊的情况,也可以用更精准的XPath写法适配:

# 提取<span>之前的所有文本
il.add_xpath('from', 'td[2]/span/preceding-sibling::text()/normalize-space()')
# 提取<span>之后的所有文本
il.add_xpath('to', 'td[2]/span/following-sibling::text()/normalize-space()')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:05:33