IKEA 재고 정보를 Ruby에서 검색
개요
IKEA 재고 관리 URL에서 얻은 XML을 처리하여 정보를 추출합니다. 간단.
배경
요즘, 항으로 인기(아마 지금도)의.
어느 날 손이 미끄러져 우연히 Chrome의 검증을 밀어 버렸다 우연히 Network를 보고 있으면 IKEA의 제품의 재고수를 알 수 있는 URL을 발견했기 때문에, IKEA 상어의 재고 감시 사이트를 만들었습니다. 제목 IKEA 상어
만들어 보자
사전 준비
nokogiri 설치 (rails 환경이라면 이미 있습니다)$ gem install nokogiri
우선 샘플
여기 IKEA의 재고를 아는 너에 액세스하면 이런 식으로 XML을 얻을 수 있습니다.
IKEA 상어 재고 정보
CLI로 재고 정보와 다음 번 입하일 (재충전일?)을 추출합니다.
ikea.rbrequire 'nokogiri'
require 'open-uri'
# url末尾の8桁の数字は商品番号
url = 'https://www.ikea.com/jp/ja/iows/catalog/availability/10373589'
xml = Nokogiri::XML(open(url).read)
STORE_NAME = { "447" => "船橋", "448" => "港北", "887" => "新三郷",
"486" => "神戸", "392" => "仙台", "509" => "長久手",
"496" => "鶴浜", "189" => "福岡新宮", "359" => "立川" }
# XMLのルートのノードから探して一致したNodeSetオブジェクトを返す→9店舗分のlocalStoreを取得
item_nodes = xml.xpath('//availability/localStore')
item_nodes.each do |item|
# attribute('xx')でlocalStoreのxx属性の属性値を取得
store_code = item.attribute('buCode').text
puts "店名:#{STORE_NAME[store_code]}(#{store_code})"
# localStore以下のstockノードを探してNodeSetで返す
item.xpath('stock').each do |store|
puts '在庫数:' + store.xpath('availableStock').text
if store.xpath('restockDate').any?
puts '次回入荷日:' + store.xpath('restockDate').text
else
puts '次回入荷日:不明'
end
end
puts "-------------------------"
end
움직여 보자
할 수 있었다! !
간단히 설명
open(url).read
에서 url 응답의 본문 부분을 문자열로 가져옵니다.
Nokogiri::XML(open(url).read)
에서 바디 부분 문자열에서Nokogiri::XML::Document
객체 생성
xml.xpath('//availability/localStore')
에서 Nokogiri::XML::NodeSet
라는 배열과 같은 객체를 가져옵니다. 이제 처리하려는 대상 데이터를 추출 할 수있었습니다.
또, xpath 메소드의 사용법은, 이번과 같이 xpath('//hoge')
로 대원으로부터 데이터를 찾아, NodeSet 객체에 대해서 한층 더 xpath('piyo')
일부 NodeSet에는 Nokogiri::XML::Element
객체가 포함되어 있습니다.
> item_nodes[1].class
=> Nokogiri::XML::Element
Element 객체에 대해 attribute('buCode')
로 속성명과 속성이 포함된 Attr 객체를 취득해, Attr에 text 메소드를 호출하면 속성치를 꺼낼 수 있다
> item_nodes[1].attribute('buCode')
=> #(Attr:0x3663e58 { name = "buCode", value = "448" })
> item_nodes[1].attribute('buCode').text
=> "448" #店舗コード
마찬가지로 Element에 text 메서드를 호출하면 태그의 값을 호출할 수 있습니다.
> item_nodes[0].xpath('stock')[0].xpath('availableStock').text
=> "73" #執筆時のIKEA船橋店のサメの在庫数
끝에
나중에 Qiita에서 검색해 보면 IKEA의 재고 확인하고 있는 기사가 꽤 발견되었습니다. 생각하는 것은 같네요.
그리고 자신은 아직 IKEA 상어를 맞이할 수 없습니다. . .
10/28일 추가
이전 IKEA 상어를 집에 맞이할 수있었습니다 🦈🎉
참고 사이트
htps : //에서 v.ぁsss d. jp / 와 l / xml 톱 - xml - rrse /
Reference
이 문제에 관하여(IKEA 재고 정보를 Ruby에서 검색), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sasasoni/items/b8223453542c90689b84
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
요즘, 항으로 인기(아마 지금도)의.
어느 날 손이 미끄러져 우연히 Chrome의 검증을 밀어 버렸다 우연히 Network를 보고 있으면 IKEA의 제품의 재고수를 알 수 있는 URL을 발견했기 때문에, IKEA 상어의 재고 감시 사이트를 만들었습니다. 제목 IKEA 상어
만들어 보자
사전 준비
nokogiri 설치 (rails 환경이라면 이미 있습니다)$ gem install nokogiri
우선 샘플
여기 IKEA의 재고를 아는 너에 액세스하면 이런 식으로 XML을 얻을 수 있습니다.
IKEA 상어 재고 정보
CLI로 재고 정보와 다음 번 입하일 (재충전일?)을 추출합니다.
ikea.rbrequire 'nokogiri'
require 'open-uri'
# url末尾の8桁の数字は商品番号
url = 'https://www.ikea.com/jp/ja/iows/catalog/availability/10373589'
xml = Nokogiri::XML(open(url).read)
STORE_NAME = { "447" => "船橋", "448" => "港北", "887" => "新三郷",
"486" => "神戸", "392" => "仙台", "509" => "長久手",
"496" => "鶴浜", "189" => "福岡新宮", "359" => "立川" }
# XMLのルートのノードから探して一致したNodeSetオブジェクトを返す→9店舗分のlocalStoreを取得
item_nodes = xml.xpath('//availability/localStore')
item_nodes.each do |item|
# attribute('xx')でlocalStoreのxx属性の属性値を取得
store_code = item.attribute('buCode').text
puts "店名:#{STORE_NAME[store_code]}(#{store_code})"
# localStore以下のstockノードを探してNodeSetで返す
item.xpath('stock').each do |store|
puts '在庫数:' + store.xpath('availableStock').text
if store.xpath('restockDate').any?
puts '次回入荷日:' + store.xpath('restockDate').text
else
puts '次回入荷日:不明'
end
end
puts "-------------------------"
end
움직여 보자
할 수 있었다! !
간단히 설명
open(url).read
에서 url 응답의 본문 부분을 문자열로 가져옵니다.
Nokogiri::XML(open(url).read)
에서 바디 부분 문자열에서Nokogiri::XML::Document
객체 생성
xml.xpath('//availability/localStore')
에서 Nokogiri::XML::NodeSet
라는 배열과 같은 객체를 가져옵니다. 이제 처리하려는 대상 데이터를 추출 할 수있었습니다.
또, xpath 메소드의 사용법은, 이번과 같이 xpath('//hoge')
로 대원으로부터 데이터를 찾아, NodeSet 객체에 대해서 한층 더 xpath('piyo')
일부 NodeSet에는 Nokogiri::XML::Element
객체가 포함되어 있습니다.
> item_nodes[1].class
=> Nokogiri::XML::Element
Element 객체에 대해 attribute('buCode')
로 속성명과 속성이 포함된 Attr 객체를 취득해, Attr에 text 메소드를 호출하면 속성치를 꺼낼 수 있다
> item_nodes[1].attribute('buCode')
=> #(Attr:0x3663e58 { name = "buCode", value = "448" })
> item_nodes[1].attribute('buCode').text
=> "448" #店舗コード
마찬가지로 Element에 text 메서드를 호출하면 태그의 값을 호출할 수 있습니다.
> item_nodes[0].xpath('stock')[0].xpath('availableStock').text
=> "73" #執筆時のIKEA船橋店のサメの在庫数
끝에
나중에 Qiita에서 검색해 보면 IKEA의 재고 확인하고 있는 기사가 꽤 발견되었습니다. 생각하는 것은 같네요.
그리고 자신은 아직 IKEA 상어를 맞이할 수 없습니다. . .
10/28일 추가
이전 IKEA 상어를 집에 맞이할 수있었습니다 🦈🎉
참고 사이트
htps : //에서 v.ぁsss d. jp / 와 l / xml 톱 - xml - rrse /
Reference
이 문제에 관하여(IKEA 재고 정보를 Ruby에서 검색), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sasasoni/items/b8223453542c90689b84
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
require 'nokogiri'
require 'open-uri'
# url末尾の8桁の数字は商品番号
url = 'https://www.ikea.com/jp/ja/iows/catalog/availability/10373589'
xml = Nokogiri::XML(open(url).read)
STORE_NAME = { "447" => "船橋", "448" => "港北", "887" => "新三郷",
"486" => "神戸", "392" => "仙台", "509" => "長久手",
"496" => "鶴浜", "189" => "福岡新宮", "359" => "立川" }
# XMLのルートのノードから探して一致したNodeSetオブジェクトを返す→9店舗分のlocalStoreを取得
item_nodes = xml.xpath('//availability/localStore')
item_nodes.each do |item|
# attribute('xx')でlocalStoreのxx属性の属性値を取得
store_code = item.attribute('buCode').text
puts "店名:#{STORE_NAME[store_code]}(#{store_code})"
# localStore以下のstockノードを探してNodeSetで返す
item.xpath('stock').each do |store|
puts '在庫数:' + store.xpath('availableStock').text
if store.xpath('restockDate').any?
puts '次回入荷日:' + store.xpath('restockDate').text
else
puts '次回入荷日:不明'
end
end
puts "-------------------------"
end
open(url).read
에서 url 응답의 본문 부분을 문자열로 가져옵니다.Nokogiri::XML(open(url).read)
에서 바디 부분 문자열에서Nokogiri::XML::Document
객체 생성xml.xpath('//availability/localStore')
에서 Nokogiri::XML::NodeSet
라는 배열과 같은 객체를 가져옵니다. 이제 처리하려는 대상 데이터를 추출 할 수있었습니다.또, xpath 메소드의 사용법은, 이번과 같이
xpath('//hoge')
로 대원으로부터 데이터를 찾아, NodeSet 객체에 대해서 한층 더 xpath('piyo')
일부 NodeSet에는
Nokogiri::XML::Element
객체가 포함되어 있습니다.> item_nodes[1].class
=> Nokogiri::XML::Element
Element 객체에 대해
attribute('buCode')
로 속성명과 속성이 포함된 Attr 객체를 취득해, Attr에 text 메소드를 호출하면 속성치를 꺼낼 수 있다> item_nodes[1].attribute('buCode')
=> #(Attr:0x3663e58 { name = "buCode", value = "448" })
> item_nodes[1].attribute('buCode').text
=> "448" #店舗コード
마찬가지로 Element에 text 메서드를 호출하면 태그의 값을 호출할 수 있습니다.
> item_nodes[0].xpath('stock')[0].xpath('availableStock').text
=> "73" #執筆時のIKEA船橋店のサメの在庫数
끝에
나중에 Qiita에서 검색해 보면 IKEA의 재고 확인하고 있는 기사가 꽤 발견되었습니다. 생각하는 것은 같네요.
그리고 자신은 아직 IKEA 상어를 맞이할 수 없습니다. . .
10/28일 추가
이전 IKEA 상어를 집에 맞이할 수있었습니다 🦈🎉
참고 사이트
htps : //에서 v.ぁsss d. jp / 와 l / xml 톱 - xml - rrse /
Reference
이 문제에 관하여(IKEA 재고 정보를 Ruby에서 검색), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sasasoni/items/b8223453542c90689b84
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
htps : //에서 v.ぁsss d. jp / 와 l / xml 톱 - xml - rrse /
Reference
이 문제에 관하여(IKEA 재고 정보를 Ruby에서 검색), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sasasoni/items/b8223453542c90689b84텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)