โดย ประวีณ ดูบีย์
เมื่อก่อนฉันต้องรวบรวมข้อมูลไซต์เพื่อหาลิงก์ และใช้ลิงก์หน้าเหล่านั้นเพิ่มเติมเพื่อรวบรวมข้อมูลโดยใช้ซีลีเนียมหรือนักเชิดหุ่น การตั้งค่าเนื้อหาบนไซต์ค่อนข้างแปลก ดังนั้นฉันจึงไม่สามารถเริ่มต้นด้วยซีลีเนียมและโหนดโดยตรงได้ น่าเสียดายที่ข้อมูลบนเว็บไซต์มีขนาดใหญ่มาก ฉันต้องหาแนวทางอย่างรวดเร็วในการรวบรวมข้อมูลลิงก์ทั้งหมดก่อน และส่งต่อลิงก์เหล่านั้นเพื่อดูรายละเอียดการรวบรวมข้อมูลของแต่ละหน้า
นั่นคือที่ที่ฉันได้เรียนรู้สิ่งเจ๋งๆ นี้ด้วย Console API ของเบราว์เซอร์ คุณสามารถใช้สิ่งนี้บนเว็บไซต์ใดก็ได้โดยไม่ต้องตั้งค่ามากนัก เนื่องจากเป็นเพียง JavaScript
มาดูรายละเอียดทางเทคนิคกันดีกว่า
ภาพรวมระดับสูง

สำหรับการรวบรวมข้อมูลลิงก์ทั้งหมดบนหน้าเว็บ ฉันเขียน JS ส่วนเล็กๆ ไว้ในคอนโซล JavaScript นี้รวบรวมข้อมูลลิงก์ทั้งหมด (ใช้เวลา 1–2 ชั่วโมง เช่นเดียวกับการแบ่งหน้า) และทิ้ง 04 ไฟล์ที่มีข้อมูลที่รวบรวมข้อมูลทั้งหมด สิ่งที่ต้องจำไว้ก็คือ คุณต้องแน่ใจว่าเว็บไซต์ทำงานได้ คล้ายกับแอปพลิเคชันหน้าเดียว มิฉะนั้น หน้าดังกล่าวจะไม่โหลดซ้ำหากคุณต้องการรวบรวมข้อมูลมากกว่าหนึ่งหน้า หากไม่เป็นเช่นนั้น รหัสคอนโซลของคุณจะหายไป
สื่อไม่รีเฟรชเพจสำหรับบางสถานการณ์ สำหรับตอนนี้ มารวบรวมข้อมูลเรื่องราวและบันทึกข้อมูลที่คัดลอกมาในไฟล์จากคอนโซลโดยอัตโนมัติหลังจากการคัดลอก
แต่ก่อนที่เราจะทำเช่นนั้น นี่เป็นการสาธิตสั้นๆ ของการดำเนินการขั้นสุดท้าย
สาธิต ป>
1. รับอินสแตนซ์ออบเจ็กต์คอนโซลจากเบราว์เซอร์
// Console API to clear console before logging new data
console.API;
if (typeof console._commandLineAPI !== 'undefined') { console.API = console._commandLineAPI; //chrome
} else if (typeof console._inspectorCommandLineAPI !== 'undefined'){ console.API = console._inspectorCommandLineAPI; //Safari
} else if (typeof console.clear !== 'undefined') { console.API = console;
}
รหัสเพียงพยายามรับอินสแตนซ์วัตถุคอนโซลตามเบราว์เซอร์ปัจจุบันของผู้ใช้ คุณสามารถเพิกเฉยและกำหนดอินสแตนซ์ให้กับเบราว์เซอร์ของคุณได้โดยตรง
ตัวอย่าง หากคุณใช้ Chrome โค้ดด้านล่างควรจะเพียงพอ
if (typeof console._commandLineAPI !== 'undefined') { console.API = console._commandLineAPI; //chrome
}
2. การกำหนดฟังก์ชันผู้ช่วยรุ่นเยาว์
ฉันจะถือว่าคุณได้เปิดเรื่องราวขนาดกลางในเบราว์เซอร์ของคุณแล้ว บรรทัดที่ 6 ถึง 12 กำหนดแอตทริบิวต์องค์ประกอบ DOM ซึ่งสามารถใช้เพื่อแยก ชื่อเรื่องราว จำนวนการตบมือ ชื่อผู้ใช้ URL รูปภาพโปรไฟล์ คำอธิบายโปรไฟล์ และเวลาอ่านเรื่องราว ตามลำดับ
สิ่งเหล่านี้คือสิ่งพื้นฐานที่ฉันต้องการแสดงให้เห็นสำหรับเรื่องราวนี้ คุณสามารถเพิ่มองค์ประกอบเพิ่มเติมได้ เช่น การแยกลิงก์จากเรื่องราว รูปภาพทั้งหมด หรือลิงก์ที่ฝังไว้
3. การกำหนดฟังก์ชันผู้ช่วยอาวุโสของเรา — สัตว์ร้าย
ขณะที่เรากำลังรวบรวมข้อมูลหน้าสำหรับองค์ประกอบต่างๆ เราจะบันทึกไว้ในคอลเลกชัน คอลเลกชันนี้จะถูกส่งไปยังหนึ่งในฟังก์ชันหลัก
เราได้กำหนดชื่อฟังก์ชัน 12 . งานสำหรับฟังก์ชันนี้คือดัมพ์ไฟล์ csv / json ด้วยข้อมูลที่ส่งผ่าน
มันสร้าง Blob Object ด้วยข้อมูลของเรา 29รหัส> object แสดงถึงวัตถุที่มีลักษณะคล้ายไฟล์ของข้อมูลดิบที่ไม่เปลี่ยนรูป Blobs แสดงถึงข้อมูลที่ไม่จำเป็นต้องอยู่ในรูปแบบ JavaScript-native
สร้าง Blob แนบไปกับแท็กลิงก์ 34;a> ซึ่งเหตุการณ์การคลิกถูกทริกเกอร์
นี่คือการสาธิตสั้นๆ ของ 49 ด้วย 51 ขนาดเล็ก ส่งผ่านเป็นข้อมูล

เมื่อรวบรวมโค้ดทั้งหมดเข้าด้วยกัน นี่คือสิ่งที่เรามี:
- อินสแตนซ์ API ของคอนโซล
- ฟังก์ชันตัวช่วยในการแยกองค์ประกอบ
- ฟังก์ชันบันทึกคอนโซลเพื่อสร้างไฟล์
มาดำเนินการ console.save() ของเราในเบราว์เซอร์เพื่อบันทึกข้อมูลเป็นไฟล์ สำหรับสิ่งนี้ คุณสามารถไปที่เรื่องราวบน Medium และรันโค้ดนี้ในคอนโซลของเบราว์เซอร์

ฉันได้แสดงการสาธิตโดยดึงข้อมูลจากหน้าเดียว แต่โค้ดเดียวกันนี้สามารถปรับแต่งเพื่อรวบรวมข้อมูลหลายเรื่องราวจากหน้าแรกของผู้จัดพิมพ์ได้ ยกตัวอย่าง freeCodeCamp:คุณสามารถนำทางจากเรื่องหนึ่งไปอีกเรื่องหนึ่งแล้วกลับมา (โดยใช้ปุ่มย้อนกลับของเบราว์เซอร์) ไปยังหน้าแรกของผู้จัดพิมพ์โดยไม่ต้องรีเฟรชหน้า
ด้านล่างนี้คือโค้ดขั้นต่ำที่คุณต้องใช้เพื่อแยกเรื่องราวหลายเรื่องจากหน้าแรกของผู้จัดพิมพ์
มาดูการทำงานของโค้ดเพื่อรับคำอธิบายโปรไฟล์จากเรื่องราวต่างๆ กัน

สำหรับแอปพลิเคชันประเภทใดก็ตาม เมื่อคุณได้ทำลายข้อมูลแล้ว คุณสามารถส่งต่อไปยัง console.save ของเราได้ ฟังก์ชั่นและจัดเก็บไว้ในไฟล์ ป>
คุณสามารถแนบฟังก์ชันบันทึกคอนโซลเข้ากับโค้ดคอนโซลของคุณได้อย่างรวดเร็ว และสามารถช่วยคุณถ่ายโอนข้อมูลในไฟล์ได้ ฉันไม่ได้บอกว่าคุณมี เพื่อใช้คอนโซลในการดึงข้อมูล แต่บางครั้งนี่อาจเป็นวิธีที่เร็วกว่า เนื่องจากเราทุกคนคุ้นเคยกับการทำงานกับ DOM โดยใช้ตัวเลือก CSS
คุณสามารถดาวน์โหลดโค้ดได้จาก Github
ขอบคุณที่อ่านบทความนี้! หวังว่ามันจะทำให้คุณมีความคิดที่ดีในการขูดข้อมูลบางส่วนอย่างรวดเร็วโดยไม่ต้องตั้งค่าอะไรมากมาย กดปุ่มปรบมือถ้ามันสนุก! หากคุณมีคำถามใด ๆ โปรดส่งอีเมลถึงฉัน (praveend806 [at] gmail [dot] com)
แหล่งข้อมูลเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับคอนโซล:
การใช้คอนโซล | เครื่องมือสำหรับนักพัฒนาเว็บ | นักพัฒนาซอฟต์แวร์ของ Google
_เรียนรู้วิธีใช้งานคอนโซล Chrome DevTools JavaScript._developers.google.comคอนโซลเบราว์เซอร์
_เบราว์เซอร์คอนโซลก็เหมือนกับเว็บคอนโซล แต่นำไปใช้กับเบราว์เซอร์ทั้งหมดแทนที่จะเป็นแท็บเนื้อหาเดียว_developer.mozilla.orgBlob
_A วัตถุ Blob แสดงถึงวัตถุที่มีลักษณะคล้ายไฟล์ของข้อมูลดิบที่ไม่เปลี่ยนรูป Blobs แสดงถึงข้อมูลที่ไม่จำเป็นต้องอยู่ใน..._developer.mozilla.org
เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพ่นซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น