2012-06-05 14 views
16

Ad esempio, ho avuto un sito "www.example.com" In realtà voglio raschiare l'html di questo sito salvando sul sistema locale. così per il test ho salvato la pagina sul mio desktop come example.htmlscraping il file con html salvato nel sistema locale

Ora che avevo scritto il codice di ragno per questo come di seguito

class ExampleSpider(BaseSpider): 
    name = "example" 
    start_urls = ["example.html"] 

    def parse(self, response): 
     print response 
     hxs = HtmlXPathSelector(response) 

Ma quando ho eseguito il codice di cui sopra sto ottenendo questo errore, come di seguito

ValueError: Missing scheme in request url: example.html 

Infine la mia intensione è quella di raschiare il file example.html che consiste di codice html www.example.com salvato nel mio sistema locale

0.123.

uno può suggerire su come assegnare il file example.html in start_urls

grazie in anticipo

+0

È possibile abilitare il middleware HTTP Cache che verrà salvato sul disco rigido. Puoi fondamentalmente riprodurre una precedente esecuzione di scrap, a seconda del timeout impostato per il middleware di HTTP Cache. –

+0

@Sjaak Trekhaak: Grazie per la tua risposta, puoi darmi un esempio, in modo che sia più utile –

+3

non sono sicuro, ma puoi provare: 'start_urls = [" file: /// home/local/cname/username/project/scrapy_project_modules/example/exampl e.html "]' – warvariuc

risposta

-2

Se si visualizza il codice sorgente di Scrapy Richiesta per esempio github. È possibile capire quale scrapy invia la richiesta al server http e ottenere la pagina necessaria in risposta dal server. Il tuo filesystem non è server http. A scopo di test con scrapy è necessario configurare il server http. E poi si può assegnare URL a Scrapy come

http://127.0.0.1/example.html 
8

È possibile utilizzare il HTTPCacheMiddleware, che vi darà la possibilità di una corsa a ragno dalla cache. Il documento per le impostazioni HTTPCacheMiddleware si trova here.

In sostanza, aggiungendo le seguenti impostazioni per il vostro settings.py farà funzionare:

HTTPCACHE_ENABLED = True 
HTTPCACHE_EXPIRATION_SECS = 0 # Set to 0 to never expire 

Ciò richiede tuttavia di fare una corsa iniziale ragno dal web per popolare la cache.

17

È possibile eseguire la scansione di un file locale utilizzando un URL della forma seguente:

file:///127.0.0.1/path/to/file.html 

Non richiede un server HTTP per essere installato sulla vostra macchina.

+1

non funziona, ma file: ///path/to/file.html - fa –