ComenzarEmpieza gratis

Hora de ejecutar

En la última lección, creamos un rastreador web completo para acceder a la información de cada curso del directorio de cursos de DataCamp. Sin embargo, la lección pareció detenerse sin clímax, porque no jugamos con el código después de terminar los métodos de análisis sintáctico.

El objetivo de este ejercicio es remediarlo.

El código que te damos para que lo veas en este ejercicio y en el siguiente es largo, ¡porque es toda la araña que nos llevó la lección crear! Sin embargo, ¡no te dejes intimidar! El objetivo de estos dos ejercicios es darte una tarea muy fácil de completar, con la esperanza de que mires y ejecutes el código de esta araña. Así, aunque sea largo, ¡lo tendrás dominado!

Este ejercicio forma parte del curso

Web scraping en Python

Ver curso

Instrucciones del ejercicio

  • Rellena el único espacio en blanco al final de los métodos de parse_pages para asignar los títulos de los capítulos al diccionario cuya clave es el título del curso correspondiente.

NOTE: Si pulsas Ejecutar código, ¡¡¡debes restablecer a código de muestra para volver a utilizar Ejecutar código correctamente!!!

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Import scrapy
import scrapy

# Import the CrawlerProcess: for running the spider
from scrapy.crawler import CrawlerProcess

# Create the Spider class
class DC_Chapter_Spider(scrapy.Spider):
  name = "dc_chapter_spider"
  # start_requests method
  def start_requests(self):
    yield scrapy.Request(url = url_short,
                         callback = self.parse_front)
  # First parsing method
  def parse_front(self, response):
    course_blocks = response.css('div.course-block')
    course_links = course_blocks.xpath('./a/@href')
    links_to_follow = course_links.extract()
    for url in links_to_follow:
      yield response.follow(url = url,
                            callback = self.parse_pages)
  # Second parsing method
  def parse_pages(self, response):
    crs_title = response.xpath('//h1[contains(@class,"title")]/text()')
    crs_title_ext = crs_title.extract_first().strip()
    ch_titles = response.css('h4.chapter__title::text')
    ch_titles_ext = [t.strip() for t in ch_titles.extract()]
    dc_dict[ crs_title_ext ] = ____

# Initialize the dictionary **outside** of the Spider class
dc_dict = dict()

# Run the Spider
process = CrawlerProcess()
process.crawl(DC_Chapter_Spider)
process.start()

# Print a preview of courses
previewCourses(dc_dict)
Editar y ejecutar código