Python 名称';MyItemName';未定义-刮擦项目名称

Python 名称';MyItemName';未定义-刮擦项目名称,python,web-scraping,scrapy,scrapy-spider,scrapy-pipeline,Python,Web Scraping,Scrapy,Scrapy Spider,Scrapy Pipeline,大家好, 我正在尝试从一个网站获取数据,我已经用scrapy做了一些项目,但我不知道如何修复这个名称错误 我的蜘蛛:crawlingvacuure.py import scrapy from scrapy.http.request import Request from scrapy import Spider from crawlVacature.items import CrawlvacatureItem class CrawlingvacatureSpider(scrapy.Spid

大家好,

我正在尝试从一个网站获取数据,我已经用scrapy做了一些项目,但我不知道如何修复这个名称错误

我的蜘蛛:crawlingvacuure.py

import scrapy
from scrapy.http.request import Request
from scrapy import Spider

from crawlVacature.items import CrawlvacatureItem


class CrawlingvacatureSpider(scrapy.Spider):
    name = 'crawlingVacature'
    allowed_domains = ['vacature.com']
    start_urls = ['https://www.vacature.com/nl-be/jobs/zoeken/BI/1']

    def parse(self,response):
        all_links = response.xpath('//div[@class="search-vacancies__prerendered-results"]/a/@href').extract()
        for link in all_links:
            yield Request('https://www.vacature.com/' + link, callback=self.parseAnnonce)

    def parseAnnonce(self,response):
         item = CrawlvacatureItem()
         item[titre] = response.css('h1::text').extract()
         item[corpus] = response.xpath('//div[@class="wrapper__content"]/section').css("div")[-1].xpath('//dl/dd/a/text()').extract()
         yield item
我的项目文件:items.py

import scrapy


class CrawlvacatureItem(scrapy.Item):
    titre = scrapy.Field()
    corpus = scrapy.Field()
我的管道文件:pipelines.py

import json

class JsonWriterPipeline(object):

    def open_spider(self, spider):
        self.file = open('items.js', 'w')

    def close_spider(self, spider):
        self.file.close()

    def process_item(self, item, spider):
        line = json.dumps(dict(item)) + "\n"
        self.file.write(line)
        return item
当然,我的settings.py文件中包含以下内容:

ITEM_PIPELINES = {
    'crawlVacature.pipelines.JsonWriterPipeline': 800,
}
我使用以下命令运行我的项目:

>>>scrapy crawl crawlingVacature
我犯的错误是:

NameError: name 'titre' is not defined

提前感谢您的帮助:-)

为了定义通用输出数据格式,Scrapy提供了Item类。 Item对象是用于收集临时数据的简单容器。 它们提供了一个类似于字典的API,并为 声明其可用字段

您应该使用字符串作为键,而不是变量

def parseAnnonce(self,response):
     item = CrawlvacatureItem()
     item['titre'] = response.css('h1::text').extract()
     item['corpus'] = response.xpath('//div[@class="wrapper__content"]/section').css("div")[-1].xpath('//dl/dd/a/text()').extract()
     yield item

非常感谢,这是一个疏忽的错误!
def parseAnnonce(self,response):
     item = CrawlvacatureItem()
     item['titre'] = response.css('h1::text').extract()
     item['corpus'] = response.xpath('//div[@class="wrapper__content"]/section').css("div")[-1].xpath('//dl/dd/a/text()').extract()
     yield item