Kom igångKom igång gratis

Dags att köra

I den förra lektionen gick vi igenom hur man skapar en komplett webbcrawler för att hämta kursinformation från varje kurs i DataCamps kurskatalog. Lektionen avslutades dock utan någon riktig avslutning, eftersom vi inte testade koden efter att ha skrivit klart parsningsmetoderna.

Den här övningen rättar till det!

Koden du får titta på i den här och nästa övning är lång – det är ju hela den spider vi byggde under lektionen! Men låt dig inte skrämmas! Poängen med de här två övningarna är att ge dig en mycket enkel uppgift att lösa, med förhoppningen att du ska läsa igenom och köra koden för den här spindeln. På så sätt får du en god förståelse för den, trots att den är lång!

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

Webbskrapning i Python

Visa kurs

Övningsinstruktioner

  • Fyll i det enda tomrummet i slutet av metoden parse_pages för att tilldela kapiteltitlarna till den dictionary vars nyckel är motsvarande kurstitel.

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