ConfigParser и Scrapy: NoSectionError

У меня проблема с моим сканером Scrapy, когда я его запускаю.

Я использовал ConfigParser, чтобы иметь небольшой config.ini для установки имени моей таблицы, которое я создаю каждый раз, когда запускаю сканер для удаления. Это базовый способ скрапа, но я все еще новичок в скрэпи и питоне

Я получаю следующие ошибки:

File "c:\python27\lib\ConfigParser.py", line 279, in options
    raise NoSectionError(section)
ConfigParser.NoSectionError: No section: 'SectionOne'
2016-02-04 15:10:57 [twisted] CRITICAL:

Вот мой config.py:

import ConfigParser 
import os

Config = ConfigParser.ConfigParser()
Config.read(os.getcwd() + '/config.ini')

def ConfigSectionMap(section):
    dict1 = {}
    options = Config.options(section)
    for option in options:
        try:
           dict1[option] = Config.get(section, option)
           if dict1[option] == -1:
               DebugPrint("skip: %s" % option)
        except:
            print("exception on %s!" % option)
            dict1[option] = None
    return dict1

Вот мой config.ini

[SectionOne]
nom_table: Seche_cheveux

Вот мой пайплайн.py:

import sqlite3
from datetime import date, datetime
import os
from config import *

TableName = ConfigSectionMap("SectionOne")['nom_table']
print TableName


class  sqlite3Pipeline(object):

    def __init__(self):
        #initialisation de la base et connexion
        try:
            #self.setupDBCon()
            self.con = sqlite3.connect(os.getcwd() + '/db.sqlite')
            self.cur = self.con.cursor()
            self.table_name = TableName
            self.createTables()
        except sqlite3.Error as e:
            raise e


    def createTables(self):
        self.createMgTable()

    def closeDB(self):
        self.con.close()

    def __del__(self):
        self.closeDB()

    def createMgTable(self, table_name):
        self.cur.execute("CREATE TABLE IF NOT EXISTS" + table_name + "(\
        nom TEXT UNIQUE, \
        url TEXT UNIQUE, \
        prix TEXT, \
        stock TEXT, \
        revendeur TEXT, \
        livraison TEXT, \
        img TEXT UNIQUE, \
        detail TEXT UNIQUE, \
        bullet TEXT UNIQUE, \
        created_at DATE \
        )")

    def process_item(self, item, spider):
        self.storeInDb(item)
        return item

    def storeInDb(self,item):
       etc....
       etc...

Пожалуйста, не могли бы вы рассказать мне, как я могу обрабатывать configparser с помощью сканера scrapy? и если можно подскажите что я делаю не так

Для информации, когда я запускаю каждый файл отдельно, все функции печати, которые я включил, работают хорошо.


person Andronaute    schedule 04.02.2016    source источник


Ответы (1)


ConfigParser.read() имеет тенденцию к тихому сбою, когда файл конфигурации не найден. Вероятно, в текущем рабочем каталоге (os.getcwd()) есть изменения, из-за которых он не может найти config.ini.

Если ваш файл config.ini находится рядом с вашим файлом config.py, вы можете использовать это вместо этого:

Config.read(os.path.join(os.path.dirname(__file__), 'config.ini'))
person ploutch    schedule 04.02.2016