ComenzarEmpieza gratis

Descripciones de DataCamp

Como en el ejercicio anterior, aquí el código es largo, ¡ya que estás trabajando con una araña de web crawling entera! Pero, de nuevo, no dejes que la cantidad de código te intimide, ahora ya sabes cómo funcionan las arañas y eres perfectamente capaz de completar la sencilla tarea que te proponemos aquí.

Como en el ejercicio anterior, hemos creado una función previewCourses que te permite previsualizar la salida de la araña, pero siempre puedes explorar también el diccionario dc_dict después de ejecutar el código.

En este ejercicio, se te pide que crees una cadena de localización CSS directa al texto de la descripción del curso. Todo lo que necesitas saber es que en la página del curso, el texto de descripción del curso está dentro de un elemento de párrafo p que pertenece a la clase course__description (dos subrayados).

Este ejercicio forma parte del curso

Web scraping en Python

Ver curso

Instrucciones de ejercicio

  • Rellena el único espacio en blanco del método parse_pages con una cadena de localización CSS que dirija al texto dentro del párrafo p elemento que pertenece a la clase course__description.

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

Pruebe este ejercicio completando este 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_Description_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):
    # Create a SelectorList of the course titles text
    crs_title = response.xpath('//h1[contains(@class,"title")]/text()')
    # Extract the text and strip it clean
    crs_title_ext = crs_title.extract_first().strip()
    # Create a SelectorList of course descriptions text
    crs_descr = response.css( ____ )
    # Extract the text and strip it clean
    crs_descr_ext = crs_descr.extract_first().strip()
    # Fill in the dictionary
    dc_dict[crs_title_ext] = crs_descr_ext

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

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

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