CommencerCommencer gratuitement

Descriptions des DataCamp

Comme dans l'exercice précédent, le code est long puisque vous travaillez avec une araignée qui parcourt tout le web ! Mais encore une fois, ne vous laissez pas intimider par la quantité de code, vous savez maintenant comment fonctionnent les spiders, et vous êtes parfaitement capable de réaliser la tâche facile qui vous est proposée ici !

Comme dans l'exercice précédent, nous avons créé une fonction previewCourses qui vous permet de prévisualiser la sortie de l'araignée, mais vous pouvez toujours explorer le dictionnaire dc_dict après avoir exécuté le code.

Dans cet exercice, il vous est demandé de créer une chaîne CSS Locator directement dans le texte de la description du cours. Tout ce que vous devez savoir, c'est que sur la page du cours, le texte de la description du cours se trouve à l'intérieur d'un paragraphe p qui appartient à la classe course__description (deux soulignements).

Cet exercice fait partie du cours

Web Scraping en Python

Afficher le cours

Instructions

  • Remplissez l'espace vide ci-dessous dans la méthode parse_pages avec une chaîne de localisation CSS qui renvoie au texte dans le paragraphe p qui appartient à la classe course__description.

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_Description_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):
    # Create a SelectorList of the course titles text
    crs_title = response.xpath('//h1[contains(@class,"title")]/text()')
    # Extract the text and strip it clean
    crs_title_ext = crs_title.extract_first().strip()
    # Create a SelectorList of course descriptions text
    crs_descr = response.css( ____ )
    # Extract the text and strip it clean
    crs_descr_ext = crs_descr.extract_first().strip()
    # Fill in the dictionary
    dc_dict[crs_title_ext] = crs_descr_ext

# Initialize the dictionary **outside** of the Spider class
dc_dict = dict()

# Run the Spider
process = CrawlerProcess()
process.crawl(DC_Description_Spider)
process.start()

# Print a preview of courses
previewCourses(dc_dict)
Modifier et exécuter le code