MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Isi satu bagian yang kosong di bawah ini dalam metode parse_pages dengan string CSS Locator yang mengarahkan ke teks di dalam elemen paragraf p yang termasuk dalam class course__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)
Edit dan Jalankan Kode