É 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
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)