Kom igångKom igång gratis

DataCamp-beskrivningar

Precis som i förra övningen är koden här lång, eftersom du arbetar med en hel webbcrawlande spindel! Men låt inte mängden kod skrämma dig – du har nu en god förståelse för hur spindlar fungerar och kan utan problem lösa den enkla uppgiften här!

Precis som i föregående övning har vi skapat en funktion previewCourses som låter dig förhandsgranska spindelns utdata, men du kan också utforska ordboken dc_dict direkt efter att du kört koden.

I den här övningen ska du skapa en CSS-selektor-sträng som pekar direkt till texten i kursbeskrivningen. Det enda du behöver veta är att kursbeskrivningstexten på kurssidan finns i ett stycke-element p som tillhör klassen course__description (två understreck).

Den här övningen är en del av kursen

Webbskrapning i Python

Visa kurs

Övningsinstruktioner

  • Fyll i det tomma stället i metoden parse_pages med en CSS-selektor-sträng som pekar till texten i stycke-elementet p som tillhör klassen course__description.

OBS: Om du klickar på Kör koden måste du använda Återställ till exempelkod för att kunna köra koden igen!

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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)
Redigera och kör kod