Erste SchritteKostenlos loslegen

DataCamp-Beschreibungen

Wie bei der vorherigen Aufgabe ist der Code hier sehr lang, da du mit einem ganzen Spider arbeitest, der durch das Netz crawlt! Aber auch hier gilt: Lass dich von der Menge an Code nicht einschüchtern. Du weißt jetzt, wie Spider funktionieren, und bist durchaus in der Lage, die einfache Aufgabe hier zu erledigen!

Wie in der vorherigen Aufgabe haben wir eine Funktion previewCourses erstellt, mit der du die Ausgabe des Spiders in der Vorschau sehen kannst, aber du kannst auch einfach das Wörterbuch dc_dict erkunden, nachdem du den Code ausgeführt hast.

In dieser Aufgabe sollst du einen CSS Locator-String erstellen, der direkt mit dem Text der Kursbeschreibung verbunden ist. Alles, was du wissen musst, ist, dass sich der Text der Kursbeschreibung auf der Kursseite in einem p-Absatzelement befindet, das zur Klasse course__description gehört (zwei Unterstriche).

Diese Übung ist Teil des Kurses

Web Scraping in Python

Kurs anzeigen

Anleitung zur Übung

  • Fülle die eine Lücke unten in der parse_pages-Methode mit einem CSS Locator-String aus, der auf den Text innerhalb des p-Elements verweist, das zur Klasse course__description gehört.

HINWEIS: Wenn du auf „Code ausführen“ klickst, musst du auf den Beispielcode zurücksetzen, um „Code ausführen“ wieder erfolgreich zu verwenden!

Interaktive Übung zum Anfassen

Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.

# 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)
Bearbeiten und Ausführen von Code