はじめに
久しぶりに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)