Frage

Ich versuche, den SgmlLinkExtractor zu machen zu arbeiten.

Dies ist die Signatur:

SgmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), restrict_xpaths(), tags=('a', 'area'), attrs=('href'), canonicalize=True, unique=True, process_value=None)

Ich bin gerade mit allow=()

Also, ich eingeben

rules = (Rule(SgmlLinkExtractor(allow=("/aadler/", )), callback='parse'),)

So wird die anfängliche URL ist 'http://www.whitecase.com/jacevedo/' und ich bin Eingabe allow=('/aadler',) und erwarten, dass '/aadler/' wird erhalten und gescannt. Aber stattdessen die Spinne scannt die anfängliche URL und schließt dann:

[wcase] INFO: Domain opened
[wcase] DEBUG: Crawled </jacevedo/> (referer: <None>)
[wcase] INFO: Passed NuItem(school=[u'JD, ', u'Columbia Law School, Harlan Fiske Stone Scholar, Parker School Recognition of Achievement in International and Foreign Law, ', u'2005'])
[wcase] INFO: Closing domain (finished)

Was bin ich falsch hier?

Gibt es hier jemand, Scrapy erfolgreich eingesetzt, die mir helfen können, diese Spinne zu beenden?

Vielen Dank für die Hilfe.

I enthalten den Code für die Spinne unter:

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from Nu.items import NuItem
from urls import u

class NuSpider(CrawlSpider):
    domain_name = "wcase"
    start_urls = ['xxxxxx/jacevedo/']

    rules = (Rule(SgmlLinkExtractor(allow=("/aadler/", )), callback='parse'),)

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

        item = NuItem()
        item['school'] = hxs.select('//td[@class="mainColumnTDa"]').re('(?<=(JD,\s))(.*?)(\d+)')
        return item

SPIDER = NuSpider()

Hinweis: SO werde mich nicht mehr als 1 url lassen veröffentlichen, damit die ursprüngliche URL als notwendig ersetzen. Tut mir leid.

War es hilfreich?

Lösung

Sie sind das Überschreiben der „Parse“ -Methode es erscheint. "Parsen", ist eine private Methode in CrawlSpider verwendet Links zu folgen.

Andere Tipps

Wenn Sie überprüfen Dokumentation eine " Warnung " ist klar geschrieben

„Wenn Crawl Spinne Regeln schreiben, vermeiden wie Rückruf mit Parse, da die Crawl-Spinne der Parse-Methode verwendet, um mich seine Logik zu implementieren. Wenn Sie also die Parse-Methode überschreiben, wird die Crawl-Spinne nicht mehr arbeiten.“

URL zur Überprüfung

allow = (r '/ aadler /', ...

Sie sind fehlende Kommas nach dem ersten Elemente für „Regeln“ zu sein, ein Tupel ..

rules = (Rule(SgmlLinkExtractor(allow=('/careers/n.\w+', )), callback='parse', follow=True),)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top