Ruby:
Загрузка веб-страницы
Как это сделать:
Ruby делает скачивание веб-страницы простым с помощью библиотек вроде net/http
и гемов, таких как 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
включают более высокоуровневые гемы вроде HTTParty
и RestClient
. Они предлагают больше функций и объектно-ориентированный подход. Для серьезного веб-скрапинга многие рубисты обращаются к Nokogiri
для разбора HTML или к Mechanize
, который действует как веб-браузер.
С точки зрения реализации, имейте в виду, что open-uri
является оберткой для net/http
, поэтому он довольно удобен, но может не иметь некоторого низкоуровневого контроля. net/http
дает вам больше контроля над запросом, но может быть многословным для простых задач.
Смотрите также
Для дальнейшего чтения и дополнительных ресурсов обратите внимание на:
- Документация Ruby’s 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/
- Репозиторий гема Mechanize: https://github.com/sparklemotion/mechanize
- Гем HTTParty на GitHub: https://github.com/jnunemaker/httparty
- Гем RestClient: https://github.com/rest-client/rest-client