LoginSignup
0
0

More than 3 years have passed since last update.

RubyでSuumoの情報をスクレイプしてみました。

Last updated at Posted at 2019-05-13

はじめに

Suumo情報を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 ## 改行コードなどが入るので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)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0