J'essaie de faire fonctionner le SgmlLinkExtractor.Scrapy SgmlLinkExtractor question
C'est la signature:
SgmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), restrict_xpaths(), tags=('a', 'area'), attrs=('href'), canonicalize=True, unique=True, process_value=None)
Je suis juste en utilisant allow=()
Alors, j'entre
rules = (Rule(SgmlLinkExtractor(allow=("/aadler/",)), callback='parse'),)
Ainsi, l'URL initiale est 'http://www.whitecase.com/jacevedo/'
et je suis entrée allow=('/aadler',)
et attendre que '/aadler/'
sera également numérisé. Mais au lieu de cela, l'araignée balaye l'URL initiale, puis se ferme:
[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)
Qu'est-ce que je fais mal ici?
Y at-il quelqu'un ici qui a utilisé avec succès Scrapy qui peut m'aider à finir cette araignée?
Merci pour votre aide.
I comprennent le code pour l'araignée ci-dessous:
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()
Note: SO ne me laisse pas poster plus de 1 url donc remplacer l'URL initiale si nécessaire. Désolé pour ça.
Voulez-vous dire cette ligne:... rappel = 'parse' – Zeynel
Oui, n'utilisez pas le callback "parse" dans votre CrawlSpider Rule –
Et changez votre méthode 'parse' en' parse_item' – Eduardo