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
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)