11.15. Konwertowanie ściągniętego z internetu dokumentu HTML na tekst

Problem

Chcemy otrzymać czysty tekst odzwierciedlający zawartość strony WWW.

Rozwiązanie

Biblioteka open-uri jest wygodnym środkiem do pobierania zawartości stron WWW: umożliwia ona otwieranie zasobów identyfikowanych przez URL-e tak, jakby były one plikami.

require 'open-uri'

example = open('http://www.example.com/')
# => #<StringIO:0x8519188>

html = example.read

Podobnie jak w przypadku pliku, metoda read zwraca łańcuch. Za pomocą szeregu wywołań metod sub i gsub można łańcuchowi temu nadać bardziej czytelną postać:

plain_text = html.sub(%r{<body.*?>(.*?)</body>}mi, '\1').gsub(/<.*?>/m, ' ').
  gsub(%r{(\n\s*){2}}, "\n\n")

Ponadto, wykorzystując standardową bibliotekę ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.