ÎncepețiÎncepe gratuit

E timpul să rulăm

În ultima lecție, am parcurs împreună crearea unui web-crawler complet pentru a accesa informații despre cursuri din directorul de cursuri DataCamp. Totuși, lecția a părut să se oprească fără un final spectaculos, deoarece nu am experimentat cu codul după ce am terminat metodele de parsare.

Scopul acestui exercițiu este să remediem tocmai asta!

Codul pe care ți-l punem la dispoziție în acest exercițiu și în cel următor este destul de lung, deoarece reprezintă întregul spider pe care l-am construit de-a lungul lecției. Nu te lăsa intimidat, însă! Scopul celor două exercițiuri este să îți ofere o sarcină foarte simplă de rezolvat, cu speranța că vei parcurge și rula codul acestui spider. Astfel, chiar dacă este lung, vei căpăta o înțelegere clară a modului în care funcționează!

Acest exercițiu face parte din cursul

Web Scraping în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează singurul spațiu liber de la sfârșitul metodei parse_pages pentru a atribui titlurile capitolelor dicționarului a cărui cheie este titlul cursului corespunzător.

NOTĂ: Dacă apeși Rulează codul, trebuie să folosești Resetează la codul exemplu înainte de a putea rula codul din nou cu succes!!

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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)
Editează și rulează codul