ยินดีต้อนรับกลับ.
เราจึงเพิ่งได้รับข้อมูลทั้งหมดจาก Hacker News
อย่างน้อยในหน้าที่เราขอและเราเห็นที่นี่ว่าเราได้รับข้อมูล HTML ทั้งหมดนี้ซึ่งดีมาก
นี่เป็นเพียงสตริงที่เราได้รับ
สิ่งที่ซุปที่สวยงามช่วยให้เราทำคือทำสิ่งที่เรียกว่า Parse
นั่นคือ เราสามารถใช้ซุปที่สวยงามเพื่อแปลงสิ่งนี้จากสตริงเป็นวัตถุจริงที่เราสามารถจัดการและใช้งานได้
การใช้ Python เพื่อแก้ไขข้อมูลนี้เป็นสิ่งที่เราต้องการ
ให้ฉันแสดงให้คุณเห็นว่าฉันหมายถึงอะไร
เราจึงสามารถใช้ซุปที่สวยงามได้แล้ว
ฉันจะเอาเนื้อออกและเราสามารถพูดได้ว่าเป็นซุปที่สวยงาม
แล้วในนี้ ฉันสามารถให้สตริงที่เราต้องการกับข้อมูลทั้งหมด ที่เป็นข้อความดอทตอบกลับอย่างเราเห็น ซึ่งอยู่ทางซ้ายตรงนี้
จากนั้นเราแยกวิเคราะห์ นั่นคือ เราบอก เฮ้ ข้อมูลนี้จำเป็นต้องแก้ไขเป็น HTML ที่เราสามารถใช้ได้จริง
วิธีที่เราทำกับซุปที่สวยงามคือเราพูดง่ายๆ ว่า HTML dot parser
และนี่บอกซุปที่สวยงามว่า เฮ้ นี่คือ HTML และฉันต้องการให้คุณแยกวิเคราะห์
ดังนั้นแปลงจากสตริงเป็นสิ่งที่เราสามารถใช้ได้จริง
และสิ่งนี้สร้างสิ่งที่เราเรียกว่าวัตถุซุป
ผมจะกำหนดให้ตัวแปรซุป แต่เรียกอะไรก็ได้ตามต้องการ
ตอนนี้ พวกคุณบางคนอาจสงสัยว่านี่คืออะไร
และเหตุผลที่เราต้องทำเช่นนี้ก็คือซุปที่สวยงามยังแยกวิเคราะห์ข้อมูลอื่นที่เรียกว่า XML
และอีกครั้ง ถ้าเราไปที่เว็บไซต์เอกสาร ไปที่เอกสารประกอบที่สวยงาม
แล้วลองค้นหา HTML dot parser กัน
คุณจะเห็นว่าเราสามารถมี parsers ต่างๆ ได้ เช่น HTML parser ที่มาพร้อมเครื่อง แต่ยังมี
XML parser และ parsers อื่นๆ ที่เราสามารถติดตั้งได้
ดังนั้น เมื่อใดก็ตามที่คุณมีคำถาม ให้อ้างอิงถึงเอกสารประกอบเสมอ และเพียงแค่ควบคุม F
แล้วคุณจะพบข้อมูลเพิ่มเติมใดๆ ที่คุณต้องการ
99% ของเวลาที่คุณใช้แค่ตัวแยกวิเคราะห์ HTML เป็นค่าเริ่มต้น
แต่นั่นหมายความว่าอย่างไร?
สิ่งนี้ทำอะไรให้เราได้บ้าง?
มาดูกันดีกว่า
ถ้าฉันพิมพ์ออบเจ็กต์ซุปที่เราเพิ่งสร้างขึ้นมาที่นี่ แล้วมาเคลียร์กันตอนนี้และรันโค้ดไพธอนของเราอีกครั้ง
ขูดรีดโดย.
ไม่เป็นไร.
เราเห็นที่นี่ว่าเราได้วัตถุซุป
จริงๆแล้วมันสะอาดขึ้นนิดหน่อย
มันไม่ใช่สตริงอีกต่อไป
คุณจะเห็นว่ามันเป็น HTML แบบเต็ม
เรามีชื่อเรื่อง เรามีหัว เรามีแท็กร่างกาย
ดังนั้นเราจึงสามารถจัดการสิ่งนี้ได้จริงราวกับว่ามันเป็น
อืม วัตถุหลาม
ตัวอย่างเช่น ฉันสามารถทำซุปดอทบอดี้เพื่อคว้าแค่ร่างกาย
ดังนั้นหากฉันบันทึกและเรียกใช้สคริปต์อีกครั้ง
ไปเลย
ตอนนี้เราเพิ่งได้รับศพ
ขออนุญาติเคลียร์ให้ชมกันนะครับ
ฉันจะเรียกใช้อีกครั้ง
คุณเห็นว่า?
ตอนนี้เรามีเพียงแค่ร่างกาย
ฉันสามารถทำบางอย่างเช่นเนื้อหาจุด
และถ้าฉันเรียกใช้สิ่งนี้ เรามาล้างสิ่งนี้อีกครั้ง
ฉันได้รับเนื้อหาทั้งหมด แต่คุณเห็นที่นี่ในรูปแบบรายการ
สุดยอด.
ตอนนี้ใช้วัตถุซุปนี้ เราสามารถทำบางสิ่งที่เรียบร้อยจริงๆ
ตัวอย่างเช่น สมมุติว่าฉันต้องการค้นหา
โดยใช้เมธอด find all div ทั้งหมดที่เรามีในอ็อบเจกต์ซุปนี้
ดังนั้นหากฉันบันทึก ให้เคลียร์สิ่งนี้และเรียกใช้สคริปต์ของเรา
มันเจ๋งแค่ไหน?
เราได้รับวัตถุ dev ทั้งหมดในรายการสำหรับสิ่งนั้นที่อยู่ในหน้านั้น
แล้วลิงค์ทั้งหมดล่ะ?
บางทีเราอยากได้แท็กทั้งหมด
ซึ่งเป็นลิงค์ของเว็บไซต์
อีกครั้ง มาเคลียร์กันตอนนี้และเรียกใช้สคริปต์ของเรา
และดูนั่นสิ
เรามีการโจมตีทั้งหมด
นั่นคือลิงค์ทั้งหมดในหน้า
และคุณสามารถจินตนาการว่ามีการใช้งานต่างๆ ที่เราสามารถทำได้ที่นี่
เราสามารถพูดชื่อเรื่องถ้าฉันเรียกใช้ชื่อที่นี่
เราได้รับแท็กชื่อของวัตถุซุปของเรา
ถ้าฉันทำอะไรเช่นที่นี่ซึ่งเป็นแท็กและฉันเรียกใช้สคริปต์อีกครั้ง
ฉันจะได้รับการโจมตีครั้งแรกที่เกิดขึ้น
อีกอย่างที่เราสามารถทำได้คือสิ่งที่เรียกว่า find
ดังนั้นแทนที่จะค้นหาทั้งหมด find กลับพบบ่อน้ำ สิ่งแรก
อีกครั้ง ถ้าฉันพบ a และฉันคลิก run ที่นี่ คุณจะเห็นว่าฉันได้รับสิ่งเดียวกัน
มันพบรายการแรก
ทำไมสิ่งนี้ถึงมีประโยชน์
เพราะถ้าเราไปที่เว็บไซต์ Hacker News และสิ่งที่อยากทำคือไปที่ลิงค์แรกที่นี่
คลิกขวา แล้วทำการตรวจสอบ
สิ่งนี้ทำให้เราได้ดี วัตถุ HTML dom ที่ให้ข้อมูลทั้งหมดบนหน้าแก่เรา
ถูกต้อง.
เมื่อมองดูสิ่งนี้ฉันรู้อย่างแน่นอน
ฉันต้องการแท็กนี้
ที่มีลิงค์และชื่อเรื่อง
แต่ฉันก็อาจจะต้องการคะแนนเสียงเช่นกัน
ถูกต้อง.
ดังนั้นถ้าฉันยังคงลงไปที่นี่
ถึงส่วนนี้
คุณจะเห็นว่าตรงนี้คือคะแนน
และฉันอาจจะสนใจว่านี่คือกี่คะแนนด้วย
ตัวอย่างเช่น ฉันสามารถใช้แอตทริบิวต์ ID ที่นี่ ให้คัดลอกคะแนนนี้
ฉันสามารถทำบางอย่างเช่นค้นหาและให้ ID ที่เท่ากับค่านี้
ถ้าตอนนี้ฉันเคลียร์ทั้งหมดและเรียกใช้ไฟล์
คุณเห็นว่า?
ฉันได้รับแท็กเดียวกันกับแนวคิดของคะแนนนี้
ดังนั้นการอนุญาตให้เราคว้าองค์ประกอบต่างๆ เหล่านี้ทั่วทั้งหน้า เราจึงสามารถเลือกข้อมูลที่เราต้องการได้
มาพักที่นี่และเรียนรู้เพิ่มเติมในวิดีโอหน้า