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
Instructions de l’exercice
- Remplissez l'unique espace vide à la fin de la méthode
parse_pagespour 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)