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

Scrapy代码运行无报错无输出 无法生成预期JSON文件求助

问题排查

  • 仅定义了Spider类,没有触发Scrapy爬取逻辑:Scrapy不会自动执行你定义的爬虫类,需要显式调用爬虫启动接口才能运行爬取任务。
  • parse方法没有返回爬取结果:提取到cours变量后没有通过yield返回数据,Scrapy无法捕获要输出的内容,自然不会生成JSON文件。
  • 定时逻辑写法错误:将Spider类定义在死循环内部,每次循环仅重复定义类,没有执行任何有效操作,且time.sleep是同步阻塞方法,不能直接放在Scrapy异步流程内做定时。
  • 没有指定JSON输出配置:运行Scrapy时需要显式配置输出规则,否则爬取到数据也不会自动生成JSON文件。

修正方案

调整代码结构后可正常运行的示例如下:

import scrapy
from scrapy.crawler import CrawlerProcess
import time
from datetime import datetime

# 爬虫类只需要定义一次,不要放在循环内重复定义
class QuotesSpider(scrapy.Spider):
    name = 'quotes'
    start_urls = [
        'https://www.google.com/finance/quote/TSLA:NASDAQ?sa=X&ved=2ahUKEwjn0orhqefxAhVS3IUKHbX9BKoQ3ecFMAB6BAgQEBo',
    ]
    # 配置请求头避免被反爬拦截
    custom_settings = {
        'DEFAULT_REQUEST_HEADERS': {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
        }
    }

    def parse(self, response):
        for quote in response.css('div.AHmHk'):
            cours = quote.css('div.YMlKec.fxKbKc::text').get()
            # 必须yield返回数据,Scrapy才会捕获并输出到文件
            yield {
                'crawl_time': datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
                'tsla_price': cours
            }

def run_crawler():
    process = CrawlerProcess(settings={
        # 配置输出JSON文件,overwrite设为False会追加数据,设为True每次覆盖旧文件
        "FEEDS": {
            "tsla_price.json": {"format": "json", 'overwrite': False},
        },
        "LOG_LEVEL": "INFO" # 减少不必要的日志输出,排查问题可改为DEBUG
    })
    process.crawl(QuotesSpider)
    # 爬取完成后自动关闭进程,方便下次循环启动
    process.start(stop_after_crawl=True)

if __name__ == "__main__":
    starttime = time.time()
    while True:
        run_crawler()
        # 等待1分钟执行下一次爬取
        time.sleep(60.0 - ((time.time() - starttime) % 60.0))

补充说明

如果需要更稳定的定时调度,可改用APScheduler结合Scrapy CrawlerProcess实现,避免time.sleep带来的时间漂移问题;如果运行后JSON文件内容为空,可打开DEBUG日志检查选择器是否匹配到元素,部分区域访问Google Finance可能需要代理配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:27:03