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

如何使用Scrapy爬取指定的HTML代码片段?

使用Scrapy爬取指定HTML片段中的日期信息

嘿,我来帮你搞定这个爬取需求!你要提取的日期藏在带样式div的<td>元素里,其实用Scrapy的选择器就能轻松搞定,下面是具体的实现步骤和代码示例:

1. 定位目标元素

首先,目标日期所在的<td>嵌套在id为pageData11的<tbody>下的<tr>中,我们可以用XPath或者CSS选择器精准定位到这个节点:

  • XPath写法://tbody[@id="pageData11"]/tr/td
  • CSS选择器写法:tbody#pageData11 tr td

2. 提取并清理日期文本

因为<td>里除了日期文本,还有前面那个带左边框的div(里面是&nbsp;空白字符),所以提取后需要清理掉多余的空白内容。这里有两种靠谱的方式:

方式一:拼接所有文本节点后清理

这种方法会把<td>下所有的文本内容(包括div里的空白)都取出来,再用strip()去掉前后的空白,自动过滤掉中间的无效空格:

import scrapy

class DateSpider(scrapy.Spider):
    name = "date_spider"
    # 替换成你实际要爬取的页面URL
    start_urls = ['https://your-target-url.com']

    def parse(self, response):
        # 用XPath定位目标td
        target_td = response.xpath('//tbody[@id="pageData11"]/tr/td')
        # 提取所有文本节点并拼接,再清理空白
        clean_date = ''.join(target_td.xpath('.//text()').getall()).strip()
        
        # 输出结果,你也可以保存到文件或数据库
        yield {
            'extracted_date': clean_date
        }

方式二:直接定位日期对应的文本节点

如果页面结构稳定,我们可以直接定位到日期所在的第二个文本节点(第一个是div后面的空白),这样更精准:

def parse(self, response):
    # 直接获取日期对应的文本节点
    clean_date = response.xpath('//tbody[@id="pageData11"]/tr/td/text()[2]').get().strip()
    
    yield {
        'extracted_date': clean_date
    }

3. 测试爬虫

写完代码后,运行以下命令启动爬虫,结果会输出到dates.json文件里:

scrapy crawl date_spider -o dates.json

打开dates.json就能看到提取到的2018-May-29 Tuesday啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:46:29