Python - Scrapy Crawler crea archivo pero sin datos

 
Vista:

Scrapy Crawler crea archivo pero sin datos

Publicado por Ignacio Porte (1 intervención) el 17/02/2020 17:00:05
Estoy intentando hacer un spider en python para extraer todos los datos de asignaturas de una página llamada "http://buscacursos.uc.cl/", desde los horarios, los profesores, créditos, etc. El problema es que cuando ejecuto el programa en el terminal de windows con "scrapy runspider AAA.py -o datos.csv -t csv" el spider hace esto

``` terminal de windows
2020-02-16 14:21:45 [scrapy.core.engine] INFO: Spider opened
2020-02-16 14:21:45 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2020-02-16 14:21:45 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2020-02-16 14:21:45 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://buscacursos.uc.cl/> (referer: None)
2020-02-16 14:21:45 [scrapy.core.engine] INFO: Closing spider (finished)
```
y crea un archivo pero sin datos. No entiendo que está funcionando mal, pero creo que tiene que ver con las rutas de xpath o las reglas. El código es el siguiente
```python
from scrapy.item import Field, Item
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.loader import ItemLoader

class BuscaCursosItem(Item):
nrc = Field()
sigla = Field()
permite_retiro = Field()
se_dicta_en_inglés = Field()
sección = Field()
requiere_Aprobación_Especial = Field()
categoría = Field()
nombre = Field()
profesor = Field()
campus = Field()
créditos = Field()
vacantes_total = Field()
vacantes_disponibles = Field()
vacantes_reservadas = Field()
horario = Field()
aaa=Field()

class BuscaCursosCrawler(CrawlSpider):
name = "BuscaCrawler"
start_urls= ["http://buscacursos.uc.cl/"]
allowed_domains = ["buscacursos.uc.cl"]

rules = (Rule(LinkExtractor(allow = r"semestre=2020-1"), callback = "parse_items" ),)

def parse_items(self, response):
item = ItemLoader(BuscaCursosItem(), response)
item.add_xpath("nrc", "//td[1]/text()")
item.add_xpath('sigla', '//td[2]/div/text()')
item.add_xpath('permite_retiro', '//td[3]/text()')
item.add_xpath('se_dicta_en_inglés', '//td[4]/text()')
item.add_xpath('sección', '//td[5]/text()')
item.add_xpath('requiere_aprobación_especial', '//td[6]/text()')
item.add_xpath('categoría', '//td[7]/text()')
item.add_xpath('nombre', '//td[8]/text()')
item.add_xpath('profesor', '//td[9]/text()')
item.add_xpath('campus', '//td[10]/text()')
item.add_xpath('créditos', '//td[11]/text()')
item.add_xpath('vacantes_total', '//td[12]/text()')
item.add_xpath('vacantes_disponibles', '//td[13]/text()')
item.add_xpath('vacantes_reservadas', '//td[14]/text()')
item.add_xpath('horario', '//td[15]/text()')
yield item.load_item()
```
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder