2012-06-05 12 views
16

Örneğin ben bir site vardı "www.example.com" Aslında bu sitenin html yerel sisteme kaydederek kazımak istiyorum. böylece test için iyerel sistemde kaydedilen html ile dosyayı kazıyarak

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

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

aşağıda bunun için örümcek kodu yazmıştı example.html Şimdi

olarak benim masaüstünde o sayfayı kurtardı Ama ben

aşağıdaki gibi bu hatayı alıyorum Yukarıdaki kodu çalıştırdığınızda
ValueError: Missing scheme in request url: example.html 

Son olarak benim intension benim yerel sisteme

kaydedilen www.example.com html kodu oluşur example.html dosyayı kazımak için

herhangi biri, örneğin github için scrapy Talebinin kaynak kodunu görüntülemek lütfen önceden

+0

Sabit diskinize kaydedilecek HTTP Önbellek ara katmanını etkinleştirebilirsiniz. Temel olarak, HTTP Önbellek ara katman yazılımı için ayarladığınız zaman aşımına bağlı olarak önceki bir kazı işlemini tekrarlayabilirsiniz. –

+0

@Sjaak Trekhaak: Cevabınız için teşekkürler, bana bir örnek verebilir, böylece daha yararlı –

+3

emin değilim, ama deneyebilirsiniz: 'start_urls = [" file: /// home/local/cname/username/project/scrapy_project_modules/example/exampl‌ e.html "]' – warvariuc

cevap

-2

yılında start_urls

sayesinde bu example.html dosyası atamak için nasıl beni önerebilir. Scrub sunucusunun http sunucusuna gönderdiği istekleri anlayabilir ve sunucudan yanıt olarak gerekli sayfayı alabilirsiniz. Dosya sisteminiz http sunucusu değil. Scrapy ile test amaçlı olarak http sunucusunu kurmalısınız. Ve sonra

http://127.0.0.1/example.html 
8

Sen önbellekten bir örümcek vadede etmek için size yeteneği verecek HTTPCacheMiddleware kullanabilirsiniz gibi scrapy urllerini atayabilirsiniz. HTTPCacheMiddleware ayarları için belge here bulunur.

Esas olarak, settings.py için aşağıdaki ayarları ekleyerek o iş yapmak olacaktır:

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

Ancak bu önbelleği doldurmak için web'den bir ilk örümcek koşmak yapmak gerekir.

17

Aşağıdaki formu bir url kullanarak yerel bir dosya tarayabilir:

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

Bu makinenizde yüklü olması bir http sunucusu gerektirmez.

+1

cevabını aldım, fakat çalışmaz: ///path/to/file.html - yapar –

İlgili konular