ถึงเวลาใช้ Crawler
นี่คือโอกาสแรกที่จะได้ลองใช้ spider ที่สามารถ crawl ข้ามเว็บไซต์ได้ โดยเริ่มจากการรวบรวมลิงก์จากเว็บหนึ่ง แล้วติดตามลิงก์เหล่านั้นเพื่อดึงข้อมูลจากเว็บอื่นต่อไป spider ตัวนี้จะเริ่มต้นที่ไดเรกทอรีคอร์สของ DataCamp เวอร์ชันย่อ จากนั้นดึงลิงก์ของคอร์สต่าง ๆ ในเมธอด parse แล้วติดตามลิงก์เหล่านั้นเพื่อดึงคำอธิบายคอร์สจากแต่ละหน้าในเมธอด parse_descr และเก็บคำอธิบายเหล่านั้นไว้ในลิสต์ course_descrs หน้าที่ของคุณคือเติมโค้ดให้ครบเพื่อให้ spider ทำงานได้ตามต้องการ!
เราได้สร้างฟังก์ชัน inspect_spider ไว้ให้แล้ว ซึ่งจะพิมพ์คำอธิบายคอร์สที่ scrape ได้ออกมา (หากทำได้ถูกต้อง)!
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Web Scraping ด้วย Python
คำแนะนำการฝึกหัด
- เติมช่องว่างสองช่องด้านล่าง (ช่องละหนึ่งช่องในแต่ละเมธอดการ parse) ด้วยค่าที่เหมาะสม เพื่อให้ spider สามารถเคลื่อนจากเมธอดการ parse แรกไปยังเมธอดที่สองได้อย่างถูกต้อง
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the scrapy library
import scrapy
# Create the Spider class
class DCdescr( scrapy.Spider ):
name = 'dcdescr'
# start_requests method
def start_requests( self ):
yield scrapy.Request( url = url_short, callback = self.parse )
# First parse method
def parse( self, response ):
links = response.css( 'div.course-block > a::attr(href)' ).extract()
# Follow each of the extracted links
for link in links:
yield ____
# Second parsing method
def parse_descr( ____ ):
# Extract course description
course_descr = response.css( 'p.course__description::text' ).extract_first()
# For now, just yield the course description
yield course_descr
# Inspect the spider
inspect_spider( DCdescr )