Estoy tratando de hacer que el SgmlLinkExtractor funcione.Scrapy SgmlLinkExtractor pregunta
Esta es la firma:
SgmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), restrict_xpaths(), tags=('a', 'area'), attrs=('href'), canonicalize=True, unique=True, process_value=None)
sólo estoy usando allow=()
Así, entro
rules = (Rule(SgmlLinkExtractor(allow=("/aadler/",)), callback='parse'),)
Así, la url inicial es 'http://www.whitecase.com/jacevedo/'
y estoy entrando en allow=('/aadler',)
y esperar También se escaneará '/aadler/'
. Pero en cambio, la araña escanea la url inicial y luego se cierra:
[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é estoy haciendo mal aquí?
¿Hay alguien aquí que haya utilizado Scrapy con éxito que pueda ayudarme a terminar esta araña?
Gracias por la ayuda.
que incluyen el código de la araña a continuación:
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()
Nota: SO no me deja publicar más de 1 url de modo sustituir la URL inicial cuando sea necesario. Lo siento por eso.
¿Se refiere a esta línea:... devolución de llamada = 'parse' – Zeynel
Sí. No use la devolución de llamada "parse" en su Regla CrawlSpider. –
Y cambie su método 'parse' para que sea' parse_item' – Eduardo