การใช้ Selector กับ Response
สิ่งที่ควรทำความเข้าใจ ณ จุดนี้เกี่ยวกับความสัมพันธ์ระหว่าง Selector และ Response คือ ทั้งคู่ คืนค่าเป็น SelectorList เมื่อใช้เมธอด xpath หรือ css เพื่อระบุ element ในแบบฝึกหัดนี้ เราจะพิสูจน์สิ่งนี้ โดยให้ค้นหา element hyperlink ทั้งหมดที่อยู่ใน class course-block__link (สังเกต double underscore!) แล้วดู object ที่ได้จากการทำเช่นนั้น
การค้นหา element ตาม class ใช้จุด (.) ได้เลย ตัวอย่างเช่น div.class-2 จะเลือก element div ทั้งหมดที่อยู่ใน class-2
เราได้โหลด Response object ชื่อ response และ Selector object ชื่อ sel ไว้ให้แล้ว โดยทั้งคู่มีเนื้อหาจากเว็บไซต์ "ลับ" เดียวกัน เมื่อสร้าง CSS Locator เสร็จแล้ว ให้เปรียบเทียบผลลัพธ์จาก response.css และ selector.css เพื่อดูว่าทั้งสองให้ผลเหมือนกัน!
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Web Scraping ด้วย Python
คำแนะนำการฝึกหัด
- กำหนดค่าให้ตัวแปร
css_locatorเป็น CSS Locator string ที่ระบุไปยัง element hyperlinkaทั้งหมดที่อยู่ใน classcourse-block__link - กำหนดค่าให้ตัวแปร
response_asเป็นผลลัพธ์จากการส่งตัวแปรcss_locatorไปยังเมธอดcssของresponse - กำหนดค่าให้ตัวแปร
sel_asเป็นผลลัพธ์จากการส่งตัวแปรcss_locatorไปยังเมธอดcssของsel
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create a CSS Locator string to the desired hyperlink elements
css_locator = ____
# Select the hyperlink elements from response and sel
response_as = ____
sel_as = ____
# Examine similarity
nr = len( response_as )
ns = len( sel_as )
for i in range( min(nr, ns, 2) ):
print( "Element %d from response: %s" % (i+1, response_as[i]) )
print( "Element %d from sel: %s" % (i+1, sel_as[i]) )
print( "" )