2016-08-12 2 views
0

Meine Forderung ist es, alle URL in sitemap.xml zu bekommen, tut scrapy sitemapspider Klasse die Aufgabe, aber es auch versuchen, die Seiten zu analysieren, die das Crawling, wie es langsam machen versuchen, die gesamten zum Download Seite.Wie in Scrapy SitemapSpider analysieren zu stoppen

Gibt es einen Weg, einfach die URL des zu bekommen, ohne in jedem von ihnen zu gehen.

+0

Ich denke, man Link-Extraktor verwenden können, die nur die Links auf der Seite extrahiert und sie nicht herunterladen. Später können Sie diese Daten in eine Datei oder etwas ausgeben. - http://doc.scrapy.org/en/latest/topics/link-extractors.html –

+0

Könnten Sie ein bisschen mehr klären, was Sie tun wollen? Sie möchten zu sitemap.xml gehen und alle Links daraus extrahieren? – Granitosaurus

+0

ja Granitosaurus –

Antwort

0

Sie können mit scrapy.utils.sitemap.Sitemap Objekt Urls aus Sitemap extrahieren, die alles für Sie tut.

import scrapy 
from scrapy.utils.sitemap import Sitemap 


class SitemapJustUrlsSpider(scrapy.Spider): 
    name = "sitemap_spider" 
    start_urls = (
     'http://www.example.com/sitemap.xml', 
    ) 

    def parse(self, response): 
     s = Sitemap(response.body) 
     for sitelink in s: 
      url = sitelink['loc'] 
      yield {'url': url} 

Dann einfach die URLs speichern: scrapy crawl sitemap_spider -o urls.json

Verwandte Themen