【Ruby】Suumoの情報をRubyでスクレイプしたのでメモ

はじめに

久しぶりにRubyでスクレイプしたので書いた内容をメモしておきます。

まだまだ修行中のため、もっとこうしたらいいなど、コメントありましたらぜひ、アドバイスいただけると嬉しいです!

内容

  • 特定のSuumoのサイトを指定して、物件名と価格取得する
  • 取得した内容をCSVデータとして出力する

それでは下記コード

今回はMechanizeを利用しました。

require 'mechanize'
require 'CSV'
def get_stock_data(url)
agent = Mechanize.new
page = agent.get("#{url}")
names = get_name(page)
prices = get_price(page)
create_data(names, prices)
end
def get_name(page) ## 物件名を取得する
names = []
stock_names = page.search('#js-bukkenList').search('.cassette_header').search('h2 a').children
stock_names.each do |name|
names << name.inner_text
end
return names
end
def get_price(page) ## 物件価格を取得する
stock_prices = []
prices = page.search('#js-bukkenList').search('.cassette_price').search('div').search('.cassette_price-accent').children
prices.each do |price|
stock_prices << price.inner_text.strip
end
return stock_prices
end
## 物件名と価格の配列を加工する
## 一番理解が薄いまま書いたので後で見直ししようと思っているところです
def create_data(names, prices)
arr = names.zip(prices)
end
## CSVを作成する
## 引数の”w”が何かしっくりきていないです
def create_csv(stock_data)
headers = ["物件名","販売価格"]
rows = stock_data
csv_data = CSV.open('stock_data.csv', 'w') do |csv|
csv << headers
rows.each do |row|
csv << row
end
end
end
## 取得したいSuumoページのURLを入力する
url = "https://suumo.jp/jj/bukken/ichiran/JJ010FJ001/?ar=030&bs=010&ta=12&firstFlg=0&urlFlg=0&jspIdFlg=1&sc=12203&kb=1&kt=9999999&km=1&mb=0&mt=9999999&ekTjCd=&ekTjNm=&tj=0&srch_navi=1"
stock_data = get_stock_data(url)
create_csv(stock_data)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です