Scrapy, Folgen nur internen URLS, die aber alle extrahieren links gefunden
Möchte ich, um alle externen links, die von einer bestimmten website mit Scrapy. Mit dem folgenden code die Spinne krabbelt externe links:
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor
from myproject.items import someItem
class someSpider(CrawlSpider):
name = 'crawltest'
allowed_domains = ['someurl.com']
start_urls = ['http://www.someurl.com/']
rules = (Rule (LinkExtractor(), callback="parse_obj", follow=True),
)
def parse_obj(self,response):
item = someItem()
item['url'] = response.url
return item
Was bin ich? Nicht "allowed_domains" verhindern, dass die externen links gecrawlt werden? Wenn ich "allow_domains" für LinkExtractor es nicht extrahieren Sie die externen links. Nur zur Klarstellung: ich wan ' T crawl-interne links, aber extrahieren externer links. Jede Hilfe appriciated!
- Wenn ich Sie aktivieren die OffsiteMiddleware die links nicht gecrawlt, aber auch nicht extrahiert. Zumindest kann ich dann sehen "Gefiltert externe Anfrage 'www.externaldomain'. Sicher bin ich etwas fehlt hier trivial?
- nur um zu verstehen: wollen Sie die Liste aller externen links für eine bestimmte website ?
- Ja, dass ist richtig!!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie auch die link-Extraktor ziehen Sie alle verbindungen, wenn man einmal Parsen auf jeder Seite.
Den link extractor filtert die links für Sie. In diesem Beispiel wird der link extractor zu leugnen, links in der domain erlaubt, so wird es nur noch außen links.
Einen aktualisierten code, basierend auf 12Ryan12 Antwort,
Eine Lösung wäre, stellen Sie die Nutzung ein process_link Funktion in der SgmlLinkExtractor
Dokumentation hier http://doc.scrapy.org/en/latest/topics/link-extractors.html