Çalıştırma Zamanı
Son derste, DataCamp kurs dizinindeki her bir kurstan kurs bilgilerine erişmek için baştan sona bir web-crawler oluşturduk. Ancak ayrıştırma yöntemlerini bitirdikten sonra kodla oynamadığımız için ders bir doruk noktasına ulaşmadan bitmiş gibi göründü.
Bu egzersizin amacı bunu telafi etmek!
Bu ve sonraki egzersizde incelemen için verdiğimiz kod uzun, çünkü derste birlikte yazdığımız örümceğin tamamı! Ama gözün korkmasın! Bu iki egzersizin amacı sana tamamlaması çok kolay bir görev vermek; böylece bu örümceğin koduna bakıp onu çalıştırmanı umuyoruz. Bu sayede, uzun olsa bile mantığını kavramış olacaksın!
Bu egzersiz
Python ile Web Scraping
kursunun bir parçasıdırEgzersiz talimatları
parse_pagesyöntemlerinin sonunda yer alan tek boşluğu doldur ve bölüm başlıklarını, anahtarı ilgili kurs başlığı olan sözlüğe ata.
NOT: Eğer Kodu Çalıştır'a basarsan, yeniden başarılı şekilde kullanabilmek için mutlaka Örnek koda sıfırla yapmalısın!!
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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)