IniziaInizia gratis

Descrizioni di DataCamp

Come nell'esercizio precedente, il codice qui è lungo perché stai lavorando con un intero spider di web crawling! Ma non farti intimidire dalla quantità di codice: ormai hai capito come funzionano gli spider e sei perfettamente in grado di portare a termine il semplice compito che ti chiediamo qui!

Come nell'esercizio precedente, abbiamo creato una funzione previewCourses che ti permette di visualizzare in anteprima l'output dello spider, ma puoi sempre esplorare anche il dizionario dc_dict dopo aver eseguito il codice.

In questo esercizio, ti viene chiesto di creare una stringa CSS Locator che punti direttamente al testo della descrizione del corso. Tutto ciò che devi sapere è che, nella pagina del corso, il testo della descrizione è dentro un elemento paragrafo p che appartiene alla classe course__description (due trattini bassi).

Questo esercizio fa parte del corso

Web Scraping in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Completa l'unico spazio vuoto qui sotto nel metodo parse_pages con una stringa CSS Locator che punti al testo all'interno dell'elemento paragrafo p che appartiene alla classe course__description.

NOTA: Se premi Esegui codice, devi Reimposta il codice di esempio per poter usare di nuovo Esegui codice con successo!!

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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)
Modifica ed esegui il codice