Začněte nyníZačněte zdarma

Čas to spustit

V poslední lekci jsme společně vytvořili celý webový crawler pro přístup k informacím o kurzech z katalogu kurzů DataCampu. Lekce ale skončila trochu bez vyvrcholení, protože jsme si s kódem nehráli ani po dokončení metod pro parsování.

Toto cvičení to napravuje!

Kód, který tu najdeš, je delší — je to celý spider, jehož vytvoření nám zabralo celou lekci. Nenech se tím ale odradit! Cílem těchto dvou cvičení je zadat ti velmi jednoduchý úkol, přičemž doufáme, že si kód tohoto spidera prohlédneš a spustíš. Díky tomu ho pochopíš i přes jeho délku!

Toto cvičení je součástí kurzu

Web Scraping v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Doplň jediné prázdné místo na konci metody parse_pages tak, aby se názvy kapitol přiřadily do slovníku pod klíčem odpovídajícího názvu kurzu.

POZNÁMKA: Pokud klikneš na Spustit kód, musíš před dalším spuštěním nejprve použít Obnovit ukázkový kód!

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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)
Upravit a spustit kód