Frage

Bitte nehmen Sie sich einen Blick auf diese Spinne Beispiel in Scrapy Dokumentation. Die Erklärung dafür ist:

  

würde Diese Spinne beginnen example.com Homepage kriechen, Sammeln Kategorie Links und Artikel Links, letztere mit dem parse_item Verfahren Parsen. Für jedes Element Antwort werden einige Daten aus dem HTML mit XPath extrahiert und ein Einzelteil wird damit gefüllt werden.

Ich kopierte die gleiche Spinne genau und ersetzt „example.com“ mit einem anderen Anfang url.

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 stb.items import StbItem

class StbSpider(CrawlSpider):
    domain_name = "stb"
    start_urls = ['http://www.stblaw.com/bios/MAlpuche.htm']

    rules = (Rule(SgmlLinkExtractor(allow=(r'/bios/.\w+\.htm', )), callback='parse', follow=True), )

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

        item = StbItem()
        item['JD'] = hxs.select('//td[@class="bodycopysmall"]').re('\d\d\d\d\sJ.D.')
        return item

SPIDER = StbSpider()

Aber meine Spinne „stb“ sammelt keine Links von „/ BIOS /“, wie es tun soll. Es wird mit der ursprünglichen URL, schabt die item['JD'] und schreibt sie auf eine Datei und dann beendet.

Warum ist es, dass SgmlLinkExtractor ignoriert wird? Die Rule wird lesen, weil es Syntaxfehler in der Rule Linie zu erreichen.

Ist das ein Fehler? es ist etwas falsch in meinem Code? Es gibt keine Fehler außer ein Haufen nicht behandelte Fehler, die ich mit jedem Lauf zu sehen.

Es wäre schön zu wissen, was ich hier falsch mache. Vielen Dank für alle Hinweise. Bin ich Missverständnis, was SgmlLinkExtractor tun soll?

War es hilfreich?

Lösung

Die parse Funktion wird tatsächlich umgesetzt und in der CrawlSpider Klasse verwendet, und Sie überschreiben es unbeabsichtigt. Wenn Sie den Namen, um etwas anderes ändern, wie parse_item, dann sollte die Regel arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top