无法以json或csv格式存储用scrapy刮取的数据

无法以json或csv格式存储用scrapy刮取的数据,json,csv,web-scraping,scrapy,Json,Csv,Web Scraping,Scrapy,在这里,我想存储网站页面上给出的列表中的数据。如果我在运行命令 response.css('title::text').extract_first() and response.css("article div#section-2 li::text").extract() 在scrapy shell中,它单独显示shell中的预期输出。 下面是我的代码,它没有以json或csv格式存储数据: import scrapy class QuotesSpider(scrapy.Spi

在这里,我想存储网站页面上给出的列表中的数据。如果我在运行命令

response.css('title::text').extract_first()        and
response.css("article div#section-2 li::text").extract()
在scrapy shell中,它单独显示shell中的预期输出。 下面是我的代码,它没有以json或csv格式存储数据:

import scrapy

class QuotesSpider(scrapy.Spider):
    name = "medical"

    start_urls = ['https://medlineplus.gov/ency/article/000178.html/']


    def parse(self, response):
        yield
        {
            'topic': response.css('title::text').extract_first(),
            'symptoms': response.css("article div#section-2 li::text").extract()
        }
我尝试使用

scrapy crawl medical -o medical.json

您需要修复您的URL,它是
https://medlineplus.gov/ency/article/000178.htm
而非
https://medlineplus.gov/ency/article/000178.html/

此外,更重要的是,您需要定义一个
类,并从spider的
parse()
回调中生成/返回它:

import scrapy


class MyItem(scrapy.Item):
    topic = scrapy.Field()
    symptoms = scrapy.Field()


class QuotesSpider(scrapy.Spider):
    name = "medical"

    allowed_domains = ['medlineplus.gov']
    start_urls = ['https://medlineplus.gov/ency/article/000178.htm']

    def parse(self, response):
        item = MyItem()

        item["topic"] = response.css('title::text').extract_first()
        item["symptoms"] = response.css("article div#section-2 li::text").extract()

        yield item