CommencezCommencez gratuitement

C'est le moment d'exécuter

Dans la dernière leçon, nous avons construit un robot d'indexation complet pour récupérer l'information de chaque cours dans l'annuaire des cours de DataCamp. Cependant, la leçon s'est terminée sans véritable point culminant, car nous n'avons pas expérimenté avec le code après avoir terminé les méthodes d'analyse.

Cet exercice vise justement à corriger cela!

Le code que nous vous présentons ici et dans le prochain exercice est long, parce qu'il s'agit de l'araignée complète que nous avons bâtie pendant la leçon! Mais ne vous laissez pas intimider! L'objectif de ces deux exercices est de vous confier une tâche très simple, dans l'espoir que vous regarderez et exécuterez le code de cette araignée. Ainsi, même s'il est long, vous allez vous l'approprier!

Cette activité fait partie du cours

Extraction de données Web en Python

Voir le cours

Instructions de l’exercice

  • Remplissez l'unique espace vide à la fin de la méthode parse_pages pour attribuer les titres de chapitres au dictionnaire dont la clé est le titre de cours correspondant.

REMARQUE : Si vous cliquez sur Exécuter le code, vous devez Réinitialiser l'exemple de code pour pouvoir utiliser Exécuter le code de nouveau!!

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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)
Modifier et exécuter le code