Zacznij terazZacznij za darmo

Czas na uruchomienie

W ostatniej lekcji przeszliśmy przez tworzenie całego web crawlera, który pobierał informacje o kursach z katalogu kursów DataCamp. Lekcja urwała się jednak bez wyraźnego zakończenia – nie pobawiliśmy się kodem po ukończeniu metod parsowania.

To ćwiczenie ma to naprawić!

Kod, który tu widzisz, jest długi – to kompletny pająk, którego budowaliśmy przez całą lekcję. Nie daj się jednak zniechęcić! Celem tych dwóch ćwiczeń jest danie ci bardzo prostego zadania do wykonania, przy okazji którego przyjrzysz się kodowi pająka i go uruchomisz. Dzięki temu, mimo że kod jest obszerny, poczujesz się z nim swobodnie!

To ćwiczenie jest częścią kursu

Web Scraping w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij jedną brakującą linię na końcu metody parse_pages, aby przypisać tytuły rozdziałów do słownika, którego kluczem jest odpowiedni tytuł kursu.

UWAGA: Jeśli klikniesz Uruchom kod, musisz użyć opcji Resetuj do przykładowego kodu, zanim ponownie skorzystasz z Uruchom kod!!

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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)
Edytuj i uruchom kod