2012-06-05 12 views
16

Zum Beispiel hatte ich eine Website "www.example.com" Eigentlich möchte ich die HTML dieser Website durch Speichern auf lokale System kratzen. so zum Testen gespeichert i die Seite auf meinem Desktop als example.htmlScraping die Datei mit HTML im lokalen System gespeichert

Jetzt i dafür, wie unten

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

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

die Spinne Code geschrieben hatte, aber wenn ich laufe den obigen Code ich diese Störung erhalte, wie unten

ValueError: Missing scheme in request url: example.html 

Schließlich meine Intension ist es, die example.html Datei zu kratzen, die www.example.com hTML-Code besteht aus

in meinem lokalen System gespeichert

Kann jemand mir empfehlen, wie in start_urls

Vielen Dank im Voraus

+0

Sie können die HTTP Cache Middleware aktivieren, die auf Ihrer Festplatte gespeichert wird. Sie können grundsätzlich einen vorherigen Scrape-Lauf wiederholen, abhängig von dem Zeitlimit, das Sie für die HTTP-Cache-Middleware festgelegt haben. –

+0

@Sjaak Trekhaak: Danke für deine Antwort, kannst du mir ein Beispiel geben, so dass es hilfreicher ist –

+3

Ich bin mir nicht sicher, aber du kannst versuchen: 'start_urls = [" file: /// home/local/cname/username/project/scrapy_project_modules/example/example.html "]' – warvariuc

Antwort

-2

dass example.html Datei zuweisen Wenn Sie Quellcode scrapy Anfrage zum Beispiel github anzuzeigen. Sie können verstehen, welche Scrapy-Anfrage an den HTTP-Server sendet und die benötigte Seite als Antwort vom Server erhält. Ihr Dateisystem ist kein HTTP-Server. Zu Testzwecken mit scrapy müssen Sie den http-Server einrichten. Und dann können Sie Urls zuweisen Scrapy wie

http://127.0.0.1/example.html 
8

Sie die HTTPCacheMiddleware verwenden können, die Ihnen die Möglichkeit, zu einem Spinnenlauf aus dem Cache geben. Das Dokument für die HTTPCacheMiddleware-Einstellungen befindet sich here.

Grundsätzlich, indem die folgenden Einstellungen an Ihre settings.py wird es funktioniert:

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

Dies erfordert jedoch eine anfängliche Spinne läuft aus dem Web zu tun, um den Cache zu füllen.

17

Sie können eine lokale Datei kriechen eine URL der folgenden Form verwenden:

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

Es erfordert keinen HTTP-Server auf dem Rechner installiert werden.

+1

es funktioniert nicht, aber file: ///path/to/file.html - tut es –

Verwandte Themen