วิธีแยกลิงก์ออกจากหน้าเว็บใด ๆ ที่ใช้ PowerShell
PowerShell 3 มีคุณสมบัติใหม่มากมายรวมถึงคุณสมบัติที่เกี่ยวข้องกับเว็บใหม่ที่ทรงพลัง พวกมันลดความซับซ้อนของการทำให้เว็บเป็นอัตโนมัติโดยอัตโนมัติและในวันนี้เราจะแสดงให้คุณเห็นว่าคุณสามารถดึงทุกลิงก์ออกจากหน้าเว็บได้อย่างไรและเลือกดาวน์โหลดทรัพยากรหากคุณต้องการ.
การขูดเว็บด้วย PowerShell
มี cmdlet ใหม่สองรายการที่ทำให้การทำให้เว็บง่ายขึ้นอัตโนมัติ Invoke-WebRequest ซึ่งทำให้การแยกเนื้อหามนุษย์อ่านง่ายขึ้นและ Invoke-RestMethod ซึ่งทำให้เนื้อหาที่อ่านได้ง่ายขึ้น เนื่องจากลิงก์เป็นส่วนหนึ่งของ HTML ของหน้าเว็บจึงเป็นส่วนหนึ่งของสิ่งที่มนุษย์อ่านได้ สิ่งที่คุณต้องทำเพื่อให้ได้เว็บเพจคือใช้ Invoke-WebRequest และให้ URL.
เรียกใช้ WebRequest -Uri 'http://howtogeek.com'
หากคุณเลื่อนลงคุณจะเห็นการตอบสนองมีคุณสมบัติการเชื่อมโยงเราสามารถใช้คุณสมบัติการแจงนับสมาชิกใหม่ของ PowerShell 3 เพื่อกรองสิ่งเหล่านี้.
(เรียกใช้ -Request -Uri 'http://howtogeek.com') .Links
อย่างที่คุณเห็นคุณได้รับลิงค์กลับมามากมายนี่คือที่ที่คุณต้องใช้จินตนาการของคุณเพื่อค้นหาสิ่งที่ไม่เหมือนใครเพื่อกรองลิงก์ที่คุณกำลังมองหา สมมติว่าเราต้องการรายการบทความทั้งหมดในหน้าแรก.
((เรียกใช้ -Request -Uri 'http://howtogeek.com') .Links | Where-Object $ _. href-like“ http *” | ตำแหน่ง class -eq“ title”)
อีกสิ่งที่ยอดเยี่ยมที่คุณสามารถทำได้กับ cmdlet ใหม่คือการดาวน์โหลดอัตโนมัติทุกวัน ให้ดูที่การคัดลอกรูปภาพในวันนั้นออกจากเว็บไซต์ Nat Geo โดยอัตโนมัติเพื่อทำสิ่งนี้เราจะรวมเว็บ cmdlets ใหม่เข้ากับ Start-BitsTransfer.
$ IOTD = ((เรียกใช้ -Request -Uri 'http://photography.nationalgeographic.com/photography/photo-of-the-day/').Links | ที่ InnerHTML เหมือน "* ดาวน์โหลดวอลล์เปเปอร์ *") href
เริ่มต้น BitsTransfer - จัดหาแหล่ง $ IOTD - ปลายทาง C: \ IOTD \
นั่นคือทั้งหมดที่มีให้มัน คุณมีกลอุบายของคุณเองบ้างไหม? แจ้งให้เราทราบในความคิดเห็น.