Python 名称';MyItemName';未定义-刮擦项目名称
大家好, 我正在尝试从一个网站获取数据,我已经用scrapy做了一些项目,但我不知道如何修复这个名称错误 我的蜘蛛:crawlingvacuure.pyPython 名称';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
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