การขูดเว็บโดยใช้ Ruby – บทช่วยสอน

เผยแพร่แล้ว: 2017-08-24

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

การขูดเว็บช่วยให้สามารถดึงข้อมูลออนไลน์ที่เป็นเป้าหมายเพื่อใช้งานต่อไปโดยเครื่องมือวิเคราะห์หรือเครื่องมือ BI วัตถุประสงค์ของการขูดเว็บยังคงหลากหลาย –

  • การดึงข้อมูลเป็นวิธีที่มีประสิทธิภาพในการโฆษณาธุรกิจของคุณและส่งเสริมผลิตภัณฑ์/บริการ
  • ผู้ใช้ ผู้บริโภค และผู้เยี่ยมชมเว็บสามารถรับข้อมูลที่ต้องการเกี่ยวกับบริการหรือผลิตภัณฑ์
  • บริษัทต่างๆ สามารถรับข้อมูลทางการแข่งขันเกี่ยวกับกลยุทธ์และแผนเพื่อขยายส่วนแบ่งการตลาดของตน
  • แบรนด์สามารถรับรู้ถึงการรับรู้ทั่วไปเกี่ยวกับแบรนด์ของตนผ่านการโต้ตอบทางโซเชียลมีเดียระหว่างผู้คน ซึ่งช่วยให้ทีมการตลาดสามารถประดิษฐ์และปรับใช้ข้อความทางการตลาดที่เกี่ยวข้องซึ่งมีความหมายเฉพาะสำหรับบุคคลของผู้ชมกลุ่มนี้ ซึ่งจะช่วยเพิ่มโอกาสในการแปลง
  • ธุรกิจจะได้รับความชัดเจนมากขึ้นเกี่ยวกับความต้องการ จุดปวด และความชอบของกลุ่มเป้าหมาย พวกเขาสามารถขับเคลื่อนการพัฒนาผลิตภัณฑ์ไปในทิศทางที่ถูกต้องด้วยปัญญาอันมีค่านี้

ลองนึกภาพถึงประโยชน์ที่จะได้รับหากเราสามารถจัดโครงสร้างข้อมูลเว็บ กำจัดสัญญาณรบกวน และส่งออกไปยังรูปแบบที่เครื่องอ่านได้ เรามาดูกันว่าสามารถทำได้โดยใช้ Ruby อย่างไร

ทางเลือกของสคริปต์การเข้ารหัส

การดึงข้อมูลและการนำแนวทางปฏิบัติในการขูดเว็บไปใช้จริงไม่ใช่เรื่องง่าย ความรู้เบื้องต้นเกี่ยวกับ CSS, HTML และสคริปต์การเข้ารหัสที่ถูกต้องจะทำให้การเดินทางของคุณราบรื่น การเลือกสคริปต์การเข้ารหัสของคุณจะมีบทบาทสำคัญในบริบทนี้ มาดูกันว่าทำไม Ruby ถึงสร้างกระแสในตลาด

หากคุณกำลังวางแผนที่จะเปิดตัวโปรแกรมขูดเว็บโปรแกรมแรกของคุณ Ruby สามารถเล่นบทบาทของภาษาสคริปต์ที่เชื่อถือได้ มีเหตุผลสองสามประการที่ทำให้ภาษานี้ได้รับความนิยมอย่างหาที่เปรียบไม่ได้ และเหตุผลต่อไปนี้จะช่วยให้คุณเข้าใจว่าทำไมภาษานี้จึงมีประสิทธิภาพมาก!

  • สคริปต์ที่ทรงพลัง : Ruby-On-Rails เป็นสคริปต์ที่ทรงพลังและมีประสิทธิภาพสำหรับการขูดเว็บ สำหรับมือใหม่และมือใหม่ ภาษานี้ได้รับการพิสูจน์แล้วว่าเป็นแหล่งข้อมูลที่แข็งแกร่ง
  • ชุมชนที่เชื่อถือได้ : Ruby มาพร้อมกับทีมนักพัฒนาที่แข็งแกร่งซึ่งสร้างชุมชนที่น่าเชื่อถือและพึ่งพาได้สูง ด้วยเอกสารนับล้านฉบับ จะไม่มีปัญหาอะไรมากมายสำหรับคุณ!
  • ติดตั้งง่าย : ขั้นตอนการติดตั้งได้รับการจัดทำเป็นเอกสารอย่างดีและค่อนข้างง่ายต่อการปฏิบัติตาม

นี่คือปัจจัยบางประการที่ทำให้ Ruby เป็นตัวเลือกที่ขาดไม่ได้สำหรับการขูดเว็บ การติดตั้งและการติดตั้งควรทำอย่างเหมาะสมที่สุด เนื่องจากกระบวนการเหล่านี้มีความสำคัญต่อการดำเนินการของกระบวนการดึงข้อมูล นี่คือบทแนะนำที่ครอบคลุมเพื่อช่วยคุณตลอดกระบวนการ

คำแนะนำทีละขั้นตอน

ก่อนที่เราจะเริ่มต้น ให้มีความชัดเจนเกี่ยวกับบางประเด็น บทช่วยสอนนี้มุ่งเป้าไปที่ผู้ใช้ Mac หากคุณใช้เครื่องอื่น กระบวนการตั้งค่าเริ่มต้นอาจแตกต่างกันเล็กน้อย ประการที่สอง โปรแกรมใช้ Nokogiri ซึ่งสามารถเปลี่ยนหน้าเว็บเป็น 'วัตถุ Ruby' ซึ่งจะทำให้ขั้นตอนการขูดเว็บง่ายขึ้น เมื่อคำนึงถึงปัจจัยทั้งสองนี้แล้ว คุณก็สามารถเริ่มต้นโครงการของคุณได้

ในคู่มือนี้ เราจะขูดพาดหัวข่าวของรายการ 100 รายการแรกบน olx สำหรับรถยนต์มือสอง

ขั้นตอนการตั้งค่า

ต่อไปนี้คือข้อกำหนดพื้นฐานในการพัฒนาการตั้งค่าที่สมบูรณ์สำหรับการดึงข้อมูลเว็บโดยใช้ Ruby

  • คอมพิวเตอร์ของคุณ ไม่ว่าจะเป็นเดสก์ท็อปหรือแล็ปท็อป ควรมี Ruby ติดอยู่ หากคุณเป็นผู้ภักดีต่อ Mac งานก็เสร็จสิ้นลงครึ่งหนึ่ง
  • คุณจะต้องมีโปรแกรมแก้ไขข้อความ ที่จำเป็นสำหรับการเขียนคำสั่งโปรแกรม หากคอมพิวเตอร์ของคุณไม่มีตัวเลือกในตัว ให้ลองดาวน์โหลด Sublime Text ด้วยคุณสมบัติที่น่าตื่นเต้นและการควบคุมที่ยอดเยี่ยม โปรแกรมแก้ไขข้อความนี้จะทำให้การเขียนโค้ดน่าตื่นเต้นและน่าสนใจ
  • อีกประการหนึ่งคือความรู้เชิงลึกเกี่ยวกับการใช้ HTML และ CSS หากคุณกำลังวางแผนที่จะเชี่ยวชาญศิลปะการขูดเว็บ ความรู้เกี่ยวกับ CSS และ HTML จะมีความสำคัญ
  • ทำความรู้จักกับ Ruby ข้อมูลเล็กน้อยมีความสำคัญในบริบทนี้ คุณสามารถตรวจสอบหลักสูตรออนไลน์บางหลักสูตรและปรับปรุงฐานความรู้ของคุณได้ ด้วยกระบวนการและปัจจัยเหล่านี้ จะถึงเวลาที่จะเริ่มขั้นตอนสำคัญ

ขั้นตอนที่ 1: การติดตั้งการพึ่งพา

ในระหว่างขั้นตอนการติดตั้ง ตรวจสอบให้แน่ใจว่าคุณได้รับข้อมูลที่สมบูรณ์เกี่ยวกับ Ruby Gems ที่มีประโยชน์ทั้งสามชิ้น สามตัวเลือกนี้รวมถึง:

  • โนโกะกิริ
  • HTTParty
  • แงะ

เนื่องจากเราได้อธิบายเล็กน้อยเกี่ยวกับ Nokogiri แล้ว เรามาพูดถึง HTTParty และ Pry กัน HTTParty เป็นอัญมณีที่เว็บขูดของเราจะใช้ในการส่งคำขอ HTTP ไปยังหน้าที่เรากำลังคัดลอก เราจะใช้ HTTParty เพื่อส่งคำขอ GET ซึ่งจะส่งคืนเนื้อหา HTML ทั้งหมดของหน้าเป็นสตริง สำหรับการดีบัก เราใช้ Pry ซึ่งเป็นอัญมณีทับทิม จะช่วยให้เราแยกวิเคราะห์โค้ดของหน้าเว็บและเป็นส่วนประกอบที่สำคัญในการตั้งค่านี้

ทำตามคำสั่งด้านล่างและเรียกใช้บนเครื่องของคุณเพื่อติดตั้งอัญมณีเหล่านี้บนคอมพิวเตอร์ของคุณ

พลอย ติดตั้ง โนโคกิริ

ปาร์ตี้ติดตั้งอัญมณี

ติดตั้งอัญมณี pry

ขั้นตอนที่ 2: การสร้างไฟล์มีดโกน

คุณจะต้องสร้างโฟลเดอร์ชื่อ nokogiri_tutorial ในตำแหน่งที่ต้องการบนคอมพิวเตอร์ของคุณ เดสก์ท็อปเป็นสถานที่ที่สมบูรณ์แบบในการทำเช่นนั้น ขั้นตอนต่อไปคือการดาวน์โหลดโปรแกรมแก้ไขข้อความ เช่น 'Sublime Text' หรือตัวเลือกอื่นๆ ที่คุณเลือก และบันทึกไฟล์ลงในโฟลเดอร์นี้ที่ชื่อ “web_scraper.RB” เมื่อคุณทำตามขั้นตอนเหล่านี้เสร็จแล้ว คุณก็พร้อมที่จะทำงานกับการขึ้นต่อกัน

ขั้นตอนที่ 3: ส่งคำขอ HTTP ไปยังเพจ

เริ่มต้นด้วยการสร้างการดำเนินการตัวแปรชื่อ 'page' และตรวจสอบให้แน่ใจว่าเท่ากับคำขอ HTTParty GET ของหน้าเว็บที่เรากำลังคัดลอก

ในกรณีนี้: https://www.olx.in/all-results/q-cars/

หลังจากนี้คุณสามารถเข้าสู่ “Pry. เริ่ม (ผูกพัน)” นำทางและค้นหาโฟลเดอร์ที่ทำเครื่องหมายเป็นไฟล์ web_scraping.Rb บันทึกไปที่เดสก์ท็อปของคุณทันที และเปิดเทอร์มินัลโดยป้อนคำสั่งนี้

cd desktop/nokogiri_tutorial

โปรแกรมขูดเว็บของคุณพร้อมสำหรับการใช้งานแล้ว คุณสามารถเรียกใช้คำสั่งนี้และเรียกใช้:

Ruby web_scraper.RB

เทอร์มินัลควรเปลี่ยนเป็น Pry และจำเป็นต้องตรวจสอบเลย์เอาต์ก่อนดำเนินการกับกระบวนการต่อไป คุณสามารถไปยังขั้นตอนต่อไป แต่ก่อนจะทำเช่นนั้น ตรวจสอบให้แน่ใจว่าคุณพิมพ์ 'exit' ในเทอร์มินัลที่เลือก ออกจาก Pry แล้วกลับไปที่ตำแหน่งเดิมของโฟลเดอร์โปรแกรม

ขั้นตอนที่ 4: ย้ายไปที่ NokoGiri

วัตถุประสงค์ในที่นี้คือ การแปลงและเปลี่ยนรายการรถเหล่านี้เป็นออบเจกต์ของ NokoGiri ก่อน เนื่องจากเป็นสิ่งสำคัญสำหรับการแยกวิเคราะห์ การสร้างตัวแปรมีความสำคัญ และคุณจะต้องพัฒนาตัวแปรใหม่โดยใช้ชื่อ “parse_page” Nokogiri มีวิธีการแปลงสตริง HTML ให้เป็นวัตถุ Nokogiri ที่โดดเด่น คุณสามารถปล่อย Pry ไว้ที่ด้านล่างของรหัส

ขั้นตอนต่อไปคือการบันทึกไฟล์ที่มีคำสั่ง Ruby Pry จะเปิดขึ้นโดยอัตโนมัติและควรป้อนตัวแปรใหม่ “parse_page” สิ่งนี้จะส่งคืนหน้า Olx ​​เป็นวัตถุ Nokogiri

ไปข้างหน้าและสร้างไฟล์ HTML ในโฟลเดอร์เดียวกันกับชื่อ 'cars.html' และคัดลอกและวางผลลัพธ์ของคำสั่ง parse_page ลงในไฟล์นี้ ข้อมูล HTML ที่จัดรูปแบบนี้จะมีประโยชน์สำหรับการอ้างอิงในภายหลัง

ก่อนเริ่มขั้นตอนถัดไป ให้ออกจาก Pry ในเทอร์มินัลของคุณ

ขั้นตอนที่ 5: การแยกวิเคราะห์ข้อมูล

การแยกวิเคราะห์ข้อมูลต้องใช้ความรู้เบื้องต้นเกี่ยวกับการเขียนโปรแกรมและการเข้ารหัส เนื่องจากคุณต้องการแยกข้อความพาดหัวของรายการรถทั้งหมด ไฟล์ cars.html จะมีประโยชน์ในการตรวจสอบข้าม ค้นหาองค์ประกอบที่สำคัญจากโฟลเดอร์และทำการตรวจสอบโดยใช้ 'เครื่องมือตรวจสอบองค์ประกอบ' หรือคุณสามารถดู 'ซอร์สโค้ดของหน้า' ได้

เนื่องจากเราพบว่ารายชื่ออยู่ใน div ที่มีชื่อคลาส 'content' คำสั่งเหล่านี้มีดังนี้ :

parse_page.css('.เนื้อหา')

parse_page.css('.content').css('.row').css('.hdrlnk')

รถยนต์_array

ตรวจสอบรูปแบบการเข้ารหัสและอาร์เรย์ทุกครั้งที่คุณเรียกใช้คำสั่ง เมื่อการแยกวิเคราะห์เสร็จสิ้น คุณจะต้องส่งออกชุดข้อมูลเป็นไฟล์ CSV

ขั้นตอนที่ 6: ส่งออกไฟล์ข้อมูลเป็น CSV

เมื่อคุณไปถึงขั้นตอนที่ 6 คุณควรเสร็จสิ้นขั้นตอนการขูดให้สำเร็จและข้อมูลที่ไม่มีโครงสร้างเปลี่ยนเป็นชุดข้อมูลที่มีโครงสร้าง กลับไปที่เทอร์มินัลกัน ออกจาก Pry หากคุณยังคงอยู่เพื่อให้เทอร์มินัลของคุณอยู่ในโฟลเดอร์ nokogiri_tutorial ซึ่งมีโปรแกรมการขูดและไฟล์ cars.html ตอนนี้พิมพ์คำสั่งต่อไปนี้:

touch cars.csv

ตอนนี้ คุณจะเหลือไฟล์ CSV เปล่าซึ่งคุณสามารถบันทึกข้อมูลจาก cars_array ได้ ตอนนี้คุณสามารถเขียนสคริปต์ง่ายๆ เพื่อเขียนข้อมูลนี้ลงในไฟล์ CSV ใหม่ของเรา และคุณมีข้อมูลรายการรถที่มีโครงสร้างเป็นไฟล์ CSV ซึ่งจะทำให้ง่ายต่อการประมวลผลและจัดการตามที่คุณต้องการ

ความคิดที่พรากจากกัน

หวังว่านี่น่าจะให้ภาพคร่าวๆ แก่คุณว่าคุณจะขูดเว็บไซต์โดยใช้ Ruby ได้อย่างไร ถึงเวลาสำรวจและรวบรวมข้อมูลไซต์ที่ซับซ้อนและท้าทายมากขึ้นโดยใช้ทักษะที่เชี่ยวชาญใหม่นี้