Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
今天是每日一套件的第 14 天,繼續跟著我一起認識 Rails 開發好用的 30 個套件,建立出自己的常用套件庫吧!
這個套件有一個很酷的名字 - Nokogiri,在日文中是鋸子的意思
本套件開門見山主要功能就是:
Nokogiri (鋸) is an HTML, XML, SAX, and Reader parser.
有別於常見的抓取API,帶回JSON。
Nokogiri 是擷取你要的 DOM 元素,再使用 parser 取用內容中的 tag。
起手式:
bundle add nokogiri
接著,在你要使用 nokogiri 的 rb 檔案裡或在 Rails 中的 rake 檔案
require 'nokogiri'
require 'open-uri' #如果有開uri的需求
把 url 餵給 Nokogiri,這裡以天瓏書局暢銷排行榜為例:
url = "https://www.tenlong.com.tw/zh_tw/recent_bestselling?range=30"
doc = Nokogiri::HTML(URI.open(url))
用 CSS 選取器,抓你要的資料
所以嚴格說起來,其實需要先去研究你想要抓取的網站的HTML架構,你才知道要怎麼擷取
假設我要抓每本書的書名
doc.css('li.single-book .title a').each do |name|
puts name.content
end
接著就看你要怎麼運用解析出來的 HTML,在自己的頁面上做重新排列。
我在 view 裡做一個範例,給大家參考:
<h1>Hello World</h1>
<div>
<% @doc.css('li.single-book .title a').each do |name| %>
<%= name.content %><br/>
<% end %>
</div>
大概就是這樣,其實他還有一些延伸的方法,都可以參考他的官方網站來使用喔
我們明天見啦!