Deskripsi DataCamp
Seperti pada latihan sebelumnya, kodenya panjang karena Anda bekerja dengan seluruh spider perayap web! Tetapi sekali lagi, jangan biarkan banyaknya kode membuat Anda gentar. Anda sudah memahami cara kerja spider, dan Anda sepenuhnya mampu menyelesaikan tugas mudah di sini!
Sama seperti pada latihan sebelumnya, kami telah membuat fungsi previewCourses yang memungkinkan Anda melihat pratinjau keluaran spider, tetapi Anda juga selalu dapat menelusuri kamus dc_dict setelah Anda menjalankan kodenya.
Dalam latihan ini, Anda diminta membuat string CSS Locator yang langsung menuju ke teks deskripsi kursus. Yang perlu Anda ketahui adalah bahwa pada halaman kursus, teks deskripsi kursus berada di dalam elemen paragraf p yang termasuk dalam class course__description (dua garis bawah).
Latihan ini adalah bagian dari kursus
Web Scraping dengan Python
Petunjuk latihan
- Isi satu bagian yang kosong di bawah ini dalam metode
parse_pagesdengan string CSS Locator yang mengarahkan ke teks di dalam elemen paragrafpyang termasuk dalam classcourse__description.
CATATAN: Jika Anda menekan Jalankan Kode, Anda harus Kembalikan ke kode contoh agar dapat menggunakan Jalankan Kode lagi dengan sukses!!
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Import scrapy
import scrapy
# Import the CrawlerProcess: for running the spider
from scrapy.crawler import CrawlerProcess
# Create the Spider class
class DC_Description_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):
# Create a SelectorList of the course titles text
crs_title = response.xpath('//h1[contains(@class,"title")]/text()')
# Extract the text and strip it clean
crs_title_ext = crs_title.extract_first().strip()
# Create a SelectorList of course descriptions text
crs_descr = response.css( ____ )
# Extract the text and strip it clean
crs_descr_ext = crs_descr.extract_first().strip()
# Fill in the dictionary
dc_dict[crs_title_ext] = crs_descr_ext
# Initialize the dictionary **outside** of the Spider class
dc_dict = dict()
# Run the Spider
process = CrawlerProcess()
process.crawl(DC_Description_Spider)
process.start()
# Print a preview of courses
previewCourses(dc_dict)