2012-06-05 13 views
16

Na przykład miałem stronę "www.example.com" Właściwie chcę skrobać html tej strony, zapisując do lokalnego systemu. więc do testowania i zapisać tę stronę na moim pulpicie jako example.htmlskrobanie pliku z html zapisanego w lokalnym systemie

Teraz miałem napisany kod pająk na to jak poniżej

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

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

Ale kiedy uruchomić powyższy kod otrzymuję ten błąd jak poniżej

ValueError: Missing scheme in request url: example.html 

Wreszcie moja intencją jest, aby zeskrobać plik example.html który składa się z kodu www.example.com html zapisany w moim systemie lokalnym

Może ktoś zasugerować mi, w jaki sposób przypisać ten plik example.html w start_urls

z góry dzięki

+0

Można włączyć oprogramowanie pośredniczące HTTP Cache, które zostanie zapisane na dysku twardym. Zasadniczo można powtórzyć poprzedni cykl skrobania, w zależności od ustawionego limitu czasu dla oprogramowania pośredniego HTTP Cache. –

+0

@Sjaak Trekhaak: Dzięki za odpowiedź na pytanie, możesz podać mi przykład, aby jej pomocna była –

+3

Nie jestem pewien, ale możesz spróbować: 'start_urls = [" file: /// home/local/cname/username/project/scrapy_project_modules/example/exampl e.html "]' – warvariuc

Odpowiedz

-2

Jeśli obejrzeć kod źródłowy scrapy Zamówienie na przykład github. Możesz zrozumieć, co scrapy wysłać żądanie do serwera http i uzyskać potrzebną stronę w odpowiedzi od serwera. Twój system plików nie jest serwerem http. Do testowania za pomocą scrapy należy skonfigurować serwer http. A potem można przypisać adresy URL scrapy jak

http://127.0.0.1/example.html 
8

Można użyć HTTPCacheMiddleware, które dadzą Ci możliwość do biegu pająka z pamięci podręcznej. Dokument dla ustawień HTTPCacheMiddleware znajduje się pod numerem here.

Zasadniczo, dodając następujące ustawienia w settings.py uczyni to działa:

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

Wymaga to jednak zrobić wstępny przebieg pająk z internetu do wypełnienia cache.

17

można indeksować plik lokalny przy użyciu url następującej postaci:

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

nie wymaga serwera HTTP być zainstalowane na komputerze.

+1

to nie działa, ale plik: ///path/to/file.html - robi –

Powiązane problemy