Ruby:
Hämta en webbsida
Gör så här:
Ruby erbjuder många sätt att ladda ner webbsidor, men här använder vi net/http
biblioteket som är inbyggt och rakt på sak.
require 'net/http'
require 'uri'
uri = URI('http://example.com')
response = Net::HTTP.get_response(uri)
puts response.body if response.is_a?(Net::HTTPSuccess)
Förväntat resultat:
<!doctype html>
<html>
<head>
<title>Example Domain</title>
...
</head>
...
</html>
Om du behöver hantera cookies eller andra avancerade funktioner, använd en gem som httparty
eller rest-client
.
Djupdykning:
I de tidiga dagarna av webben, var det vanligare att använda kommandoradsverktyg som wget
eller curl
för att ladda ner webbsidor. Med Ruby kan du dock göra detta inifrån programkoden, vilket ger dig mer flexibilitet.
Att välja rätt verktyg är nyckeln här. Medan net/http
är bra för grundläggande användning, kan gems som Mechanize
eller Nokogiri
(för att parse:a HTML) vara bättre för komplex scraping.
När du laddar ner en webbsida, tänk på webbservicens policyer och rättsliga bestämmelser som GDPR. Överanvänd inte deras resurser och respektera robots.txt
filen.
Se även:
- Ruby Docs för Net::HTTP: https://ruby-doc.org/stdlib-2.7.1/libdoc/net/http/rdoc/Net/HTTP.html
- HTTParty GitHub: https://github.com/jnunemaker/httparty
- Mechanize gem: https://github.com/sparklemotion/mechanize
- Nokogiri gem för att parse:a HTML: https://nokogiri.org/