Я пытаюсь добавить значения к данным для выгрузки в файл json, но постоянно получаю эту ошибку:
Traceback (most recent call last):
File "C:\Users\techn\Anaconda3\lib\site-packages\scrapy\utils\defer.py", line 102, in iter_errback
yield next(it)
File "C:\Users\techn\Anaconda3\lib\site-packages\scrapy\spidermiddlewares\offsite.py", line 30, in process_spider_output
for x in result:
File "C:\Users\techn\Anaconda3\lib\site-packages\scrapy\spidermiddlewares\referer.py", line 339, in <genexpr>
return (_set_referer(r) for r in result or ())
File "C:\Users\techn\Anaconda3\lib\site-packages\scrapy\spidermiddlewares\urllength.py", line 37, in <genexpr>
return (r for r in result or () if _filter(r))
File "C:\Users\techn\Anaconda3\lib\site-packages\scrapy\spidermiddlewares\depth.py", line 58, in <genexpr>
return (r for r in result or () if _filter(r))
File "C:\Users\techn\scrapy\KYCSpider\KYCSpider\spiders\kycspider.py", line 92, in parse
data['Government Members'].append({
NameError: name 'data' is not defined
Эта проблема возникла ранее с другой переменной, в которой не сказано, что она определенанесмотря на то, что определены вне функции.Я в недоумении относительно того, что я делаю здесь неправильно.
class KYCSpider(scrapy.Spider):
name = 'kycspider'
start_urls = [
'http://www.vlada.si/en/about_the_government/members_of_government/'
]
allowed_domains = ['www.vlada.si']
maxdepth = 1
isNewDoc = False
oldData = ''
newFile = ''
data = {}
data['Government Members'] = []
def spider_opened(self):
print("OPENED SPIDER")
global newFile, oldData, isNewDoc
#If data.json exists, copy its data into a string and trunctuate it
try:
oldFile = open('data.json', 'r')
oldData = oldFile.read()
isNewDoc = False
#If data.json file doesn't exist, tell spider that this is a new doc
except FileNotFoundError:
isNewDoc = True
newFile = open('data.json', 'w')
newFile.write("[")
def parse(self, response):
global data, isNewDoc
#code that assigns values to from_name, from_designation, etc.
data['Government Members'].append({
'name': from_name,
'designation': from_designation,
'dob': dob,
'address': address,
'email': email,
'phone': phone,
'website': website,
'sourceURL': sourceURL,
'operation': operation
})
Я ожидаю, что к данным будет добавлена какая-либо извлеченная информация, поэтому я могу выгрузить ее в файл JSON, когда завершит сканирование..