2017-07-21 5 views
1

Ich schrieb eine kleine Scrapy Spinne. Im Anschluss an mein CodeEinstellungen in Spider Scrapy lesen

class ElectronicsSpider(scrapy.Spider): 
    name = "electronics" 
    allowed_domains = ["www.olx.com"] 
    start_urls = ['http://www.olx.com/'] 

    def parse(self, response): 
     pass 

Meine Frage ist, möchte ich mit Einstellung der Name, allowed_domains und start_urls lesen. Wie kann ich das machen?

versuchte ich

from scrapy.settings import Settings 

auch dieses

def __init__(self,crawler): 
     self.settings = crawler.settings 

versucht, den Import, aber ich habe keine/Fehler. Hilf mir Einstellungen in meiner Spinne zu lesen?

+0

Weil 'name',' allowed_domains' usw. keine Einstellungen sind, sondern Spider-Klasse-Attribute. Wenn Sie Einstellungen aus Ihrem Spider-Code lesen müssen, können Sie nur "self.settings" verwenden, da diese von Scrapy für Sie vorbereitet wurden. –

+0

können Sie mir bitte helfen, dies zu erreichen @ Tomáš Linhart – Vigneshwaran

+0

Ich denke, dass mein Kommentar in sich abgeschlossen ist. Wenn Sie eine definitive Antwort brauchen, müssen Sie mehr Informationen über * von wo * genau Sie müssen * was * lesen. –

Antwort

-1

Wenn Sie nur die

name, allowed_domains, start_urls 

lesen möchten, können Sie diese Werte zugreifen, tun folgendes:

from XXX import ElectronicsSpider 

ElectronicsSpider.name 

ElectronicsSpider.allowed_domains 

ElectronicsSpider.start_urls 
2
from scrapy.utils.project import get_project_settings 

settings=get_project_settings() 
print settings.get('NAME') 

diesen Code verwenden wir Daten aus Einstellungsdatei lesen kann ..

0

Ich denke, wenn Sie scrapy settings.py zugreifen möchten n Antwort von @Sellamani ist gut. Aber ich denke, name, allowed_domains und start_urls sind keine Variablen, die in settings.py definiert sind. Aber wenn Sie die gleiche knd der Anordnung haben wollen dann Ihre eigene Konfigurationsdatei wie diese machen, yourown.cfg:

[Name] 
crawler_name=electronics 

[DOMAINS] 
allowed_domains=http://example.com 

und dann in Ihrem Programm verwenden ConfigParser Modul wie diese yourown.cfg zugreifen :

import ConfigParser 
config = ConfigParser.ConfigParser() 
config.read('yourown.cfg') # Assuming it is at the same location 
name=config.getint('NAME', 'crawler_name') 
allowed_domains=config.getint('DOMAINS', 'allowed_domains') 
Verwandte Themen