IniziaInizia gratis

È il momento di eseguire

Nell'ultima lezione, abbiamo creato un intero web-crawler per recuperare le informazioni di ogni corso dalla directory dei corsi di DataCamp. Però la lezione si è interrotta senza un vero finale, perché non abbiamo giocato con il codice dopo aver concluso i metodi di parsing.

Lo scopo di questo esercizio è rimediare!

Il codice che ti mostriamo in questo e nel prossimo esercizio è lungo, perché è l'intero spider che abbiamo costruito nella lezione! Ma non farti spaventare! L'obiettivo di questi due esercizi è darti un compito molto semplice da completare, con la speranza che tu dia un'occhiata ed esegua il codice di questo spider. In questo modo, anche se è lungo, riuscirai a padroneggiarlo!

Questo esercizio fa parte del corso

Web Scraping in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Compila l'unico spazio vuoto alla fine del metodo parse_pages per assegnare i titoli dei capitoli al dizionario il cui key è il titolo del corso corrispondente.

NOTA: Se premi Esegui codice, devi selezionare Reimposta il codice di esempio per 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_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)
Modifica ed esegui il codice