iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0

Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
今天是每日一套件的第 14 天,繼續跟著我一起認識 Rails 開發好用的 30 個套件,建立出自己的常用套件庫吧!

Day 14: Nokogiri

這個套件有一個很酷的名字 - 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>

大概就是這樣,其實他還有一些延伸的方法,都可以參考他的官方網站來使用喔
我們明天見啦!


上一篇
Day 13: 開開心心寫測試 - RSpec & RSpec - rails
下一篇
Day 15: 狀態打檔器 - AASM
系列文
Rails 開發,每日一套件介紹! 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言