CommencerCommencer gratuitement

Le temps de courir

Dans la dernière leçon, nous avons créé un moteur de recherche pour accéder aux informations de chaque cours dans l'annuaire des cours de DataCamp. Cependant, la leçon a semblé s'arrêter sans point culminant, car nous n'avons pas joué avec le code après avoir terminé les méthodes d'analyse.

Le but de cet exercice est d'y remédier !

Le code que nous vous donnons à voir dans cet exercice et le suivant est long, car c'est l'araignée entière que nous avons mis la leçon à créer ! Mais ne vous laissez pas intimider ! Le but de ces deux exercices est de vous donner une tâche très facile à réaliser, en espérant que vous regarderez et exécuterez le code de cet araignée. Ainsi, même s'il est long, vous le maîtriserez !

Cet exercice fait partie du cours

Web Scraping en Python

Afficher le cours

Instructions

  • Remplissez l'espace vide à la fin du site parse_pages méthodes pour assigner les titres des chapitres au dictionnaire dont la clé est le titre du cours correspondant.

NOTE: Si vous appuyez sur Run Code, vous devez réinitialiser le code échantillon pour pouvoir utiliser à nouveau Run Code !

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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