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

Scrapy爬虫已抓取内容但.jl文件为空问题求助

解决Scrapy控制台输出但.jl文件为空的问题

嘿,我来帮你搞定这个新手常遇的问题!你现在的情况很典型——控制台能打印抓取到的数据,但输出的.jl文件是空的,核心原因是你没让Scrapy“接管”这些数据,只是自己手动print了而已。

问题根源

Scrapy的输出管道(包括写入.jl、.csv等文件)只会处理你在parse方法里yield返回的Item或字典对象。你当前的代码只是把抓取到的内容存在本地列表里打印,完全没通知Scrapy要把这些数据输出到文件系统。

修复方案

新手不用先复杂定义Item类,直接yield包含数据的字典就足够让Scrapy处理输出了。修改后的代码如下:

import scrapy

class ProgxSpider(scrapy.Spider):
    name = 'progx'
    allowed_domains = ['random.com']
    # 小提醒:这里的start_urls可能是笔误,比如应该是https://www.random.com/(去掉末尾的.html),否则可能访问不到有效页面
    start_urls = ['https://www.random.com.html']

    def parse(self, response):
        # 遍历每个抓取到的位置文本
        for location in response.xpath('//div[@class="property-info-location ellipsis-element-control"]/text()').extract():
            # 清理文本里的多余空格、换行符
            clean_loc = location.strip()
            if clean_loc:  # 跳过空内容或全是空格的无效数据
                # 用yield返回字典,Scrapy会自动把它传给输出管道
                yield {'location': clean_loc}

验证方法

运行爬虫时用以下命令:

scrapy crawl progx -o output.jl

这时候打开output.jl就能看到抓取到的数据了!

额外注意点

你代码里的xpath中class写的是property-info- location(中间多了空格),我已经改成了合理的property-info-location——如果实际页面的class确实是带空格的多类,那可以改成contains(@class, "property-info-location")来匹配,不过你说控制台能输出,应该只是输入时的笔误~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:41:16