2016-04-25 9 views
0

Ich benutze Scrapy zum Crawlen alter Websites, die ich besitze, verwende ich den Code unten als meine Spinne. Es macht mir nichts aus, dass Dateien für jede Webseite oder eine Datenbank mit all dem darin enthaltenen Inhalt ausgegeben werden. Aber ich muß in der Lage sein, um die Spinne kriecht mit der ganzen Sache zu haben, um mich mit jeder einzelnen URL setzen in die ich derzeitGet Scrapy Spider zum Crawlen der gesamten Website

import scrapy 

class DmozSpider(scrapy.Spider): 
    name = "dmoz" 
    allowed_domains = ["www.example.com"] 
    start_urls = [ 
     "http://www.example.com/contactus" 
    ] 

    def parse(self, response): 
     filename = response.url.split("/")[-2] + '.html' 
     with open(filename, 'wb') as f: 
      f.write(response.body) 

Antwort

2

zu kriechen ganze Site zu tun habe, sollten Sie die CrawlSpider anstelle von die scrapy.Spider

Here's an example

Für Ihre Zwecke versuchen Sie es mit etwas wie folgt aus:

import scrapy 
from scrapy.spiders import CrawlSpider, Rule 
from scrapy.linkextractors import LinkExtractor 

class MySpider(CrawlSpider): 
    name = 'example.com' 
    allowed_domains = ['example.com'] 
    start_urls = ['http://www.example.com'] 

    rules = (
     Rule(LinkExtractor(), callback='parse_item', follow=True), 
    ) 

    def parse_item(self, response): 
     filename = response.url.split("/")[-2] + '.html' 
     with open(filename, 'wb') as f: 
      f.write(response.body) 

Werfen Sie einen Blick auf diese article

+1

Sie möchten wahrscheinlich zu dieser Regel "folgen = True" hinzufügen, um Crawlen Links fortsetzen. –

+0

Ja, danke. –

Verwandte Themen