เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ถึงเวลารันโค้ด

ในบทเรียนที่แล้ว เราได้สร้าง web crawler ทั้งหมดเพื่อดึงข้อมูลคอร์สจากแต่ละคอร์สในไดเรกทอรีคอร์สของ DataCamp แต่บทเรียนดูเหมือนจะจบลงอย่างไม่สมบูรณ์ เพราะเราไม่ได้ทดลองรันโค้ดหลังจากสร้างเมธอดสำหรับการ parse เสร็จ

แบบฝึกหัดนี้จะมาแก้ปัญหานั้น!

โค้ดที่ให้ดูในแบบฝึกหัดนี้และแบบฝึกหัดถัดไปค่อนข้างยาว เพราะเป็น spider ทั้งหมดที่ใช้เวลาทั้งบทเรียนในการสร้าง อย่าเพิ่งกังวล! จุดประสงค์ของแบบฝึกหัดทั้งสองนี้คือให้ทำภารกิจที่ ง่ายมาก พร้อมกับได้ดูและรันโค้ดของ spider นี้ไปด้วย เพื่อให้คุ้นเคยกับโค้ดทั้งหมดแม้ว่าจะยาวก็ตาม!

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Web Scraping ด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เติมช่องว่างที่ปลายเมธอด parse_pages เพื่อกำหนดชื่อบทให้กับ dictionary โดยใช้ชื่อคอร์สที่เกี่ยวข้องเป็น key

หมายเหตุ: หากกด รันโค้ด แล้วต้องการรันใหม่อีกครั้ง ต้องกด รีเซ็ตเป็นโค้ดตัวอย่าง ก่อนเสมอ!!

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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)
แก้ไขและรันโค้ด