ComeçarComece de graça

É hora de executar

Na última lição, criamos um rastreador da web completo para acessar as informações de cada curso no diretório de cursos do DataCamp. No entanto, parece que faltou um clímax na lição, porque não brincamos com o código depois de concluir os métodos de análise.

O objetivo deste exercício é cuidar disso!

O código que apresentamos a você para analisar neste e no próximo exercício é longo, porque é o spider inteiro que levamos a lição para criar! No entanto, não se intimide! O objetivo desses dois exercícios é oferecer a você uma tarefa muito fácil de ser concluída, com a esperança de que você examine e execute o código desse spider. Assim, mesmo que seja longo, você terá uma noção do que se trata!

Este exercício faz parte do curso

Raspagem da Web em Python

Ver curso

Instruções do exercício

  • Preencha o espaço em branco no final dos métodos parse_pages para atribuir os títulos dos capítulos ao dicionário cuja chave é o título do curso correspondente.

OBSERVAÇÃO: se você clicar em “Executar código”, será necessário voltar para o código de exemplo para usar “Executar código” novamente!

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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)
Editar e executar o código