2016-02-04 66 views
0

當我啓動它時,我的Scrapy爬蟲有問題。ConfigParser和Scrapy:NoSectionError

我用ConfigParser爲了有一個小的config.ini來設置我創建每次我創建爬蟲報廢的表名稱。一個基本的方法來報廢,但我仍然有scrapy和Python菜鳥

我得到的folowings錯誤:

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 

這裏是我的pipeline.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... 

請你能告訴我如何處理與scrapy爬蟲的configparser?如果可能告訴我我做錯了什麼

有關信息,當我開始每個文件seperatly,所有打印功能,我包括作品welll。

回答

0

ConfigParser.read()當配置文件沒有找到時往往會自動失敗。目前的工作目錄(os.getcwd())可能會發生變化,導致它無法找到config.ini

如果您config.ini文件旁邊的config.py,您可以使用它代替:

Config.read(os.path.join(os.path.dirname(__file__), 'config.ini')) 
+0

大,非常感謝你! – Andronaute