Ruby:
การดาวน์โหลดหน้าเว็บ
วิธีการ:
Ruby ทำให้การดาวน์โหลดเว็บเพจเป็นเรื่องง่ายด้วยไลบรารีเช่น net/http
และ gems เช่น open-uri
นี่คือวิธีการทำโดยใช้ net/http
:
require 'net/http'
require 'uri'
url = URI.parse('http://example.com')
response = Net::HTTP.get_response(url)
puts response.body if response.is_a?(Net::HTTPSuccess)
คุณจะได้รับเนื้อหา HTML ของ http://example.com
ที่พิมพ์ออกมา
การใช้ open-uri
นั้นง่ายขึ้นอีก:
require 'open-uri'
downloaded_page = URI.open('http://example.com').read
puts downloaded_page
อีกครั้ง, เนื้อหาของเว็บเพจจะถูกแสดงบนเทอมินัลของคุณ
การศึกษาอย่างลึกซึ้ง
ในช่วงวันแรกๆ ของเว็บ, การดาวน์โหลดหน้าเว็บลำบากกว่านี้ โดยต้องทำการสร้างคำขอ HTTP ด้วยตนเอง ปัจจุบัน, Ruby ลดความซับซ้อนของเรื่องนี้ลงมาก
ตัวเลือกอื่นที่ไม่ใช่ net/http
และ open-uri
รวมถึง gems ที่ระดับสูงกว่า เช่น HTTParty
และ RestClient
พวกเขาเสนอคุณสมบัติเพิ่มเติมและวิธีการเชิงวัตถุ สำหรับการดึงข้อมูลเว็บอย่างหนัก, หลายคนในวงการ Ruby หันไปใช้ Nokogiri
เพื่อวิเคราะห์ HTML หรือ Mechanize
ซึ่งทำงานเหมือนเบราว์เซอร์เว็บ
เมื่อมาถึงการทำงาน, ควรจำไว้ว่า open-uri
เป็นห่อหุ้มสำหรับ net/http
, ดังนั้นมันจึงสะดวกมาก แต่อาจขาดการควบคุมระดับต่ำบ้าง net/http
ให้ความควบคุมเพิ่มเติมแต่อาจมีคำศัพท์มากเกินไปสำหรับงานง่ายๆ
ดูเพิ่มเติม
สำหรับการอ่านเพิ่มเติมและทรัพยากรเพิ่มเติม ตรวจสอบที่:
- เอกสารของ Ruby Net::HTTP: https://ruby-doc.org/stdlib-3.0.0/libdoc/net/http/rdoc/Net/HTTP.html
- เอกสาร Open-URI: https://ruby-doc.org/stdlib-3.0.0/libdoc/open-uri/rdoc/OpenURI.html
- เว็บเพจของ Nokogiri: https://nokogiri.org/
- ที่เก็บ gem ของ Mechanize: https://github.com/sparklemotion/mechanize
- Gem HTTParty บน GitHub: https://github.com/jnunemaker/httparty
- Gem RestClient: https://github.com/rest-client/rest-client