質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.80%

改行原因を不明、同じ行にできる方法を教えてください。

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 410
require 'rubygems'
require 'mechanize'![イメージ説明](a9fc1816373faa9b7a7912652fc9b808.jpeg)
require 'kconv'



### Setting #################
url = 'https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=060&bs=040&ta=26&sc=26102&cb=0.0&ct=9999999&et=9999999&cn=9999999&mb=0&mt=9999999&shkr1=03&shkr2=03&shkr3=03&shkr4=03&fw2=&srch_navi=1'
#'https://suumo.jp/chintai/hyogo/sc_kobeshinada/'
     #'http://suumo.jp/chintai/hyogo/sc_kobeshisuma/'
#'https://suumo.jp/chintai/hyogo/sc_kobeshinada/' 

#'https://suumo.jp/chintai/hyogo/sc_kobeshinada/nj_204/'

#############################


AGENT_ALIASES = [
  'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36'
]

agent = Mechanize.new
agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
agent.cookie_jar.clear!
agent.follow_meta_refresh = true
agent.user_agent = AGENT_ALIASES[0]
agent.max_history = 2

i = 0
open("結果.csv", 'w'){|io| io.write("") }
begin
    page = agent.get("#{url}pnz1#{i += 1}.html")
    #open('1.html', 'w'){|io| io.write(page.body) }

    puts "#{i} Page"

    # 条件にあう物件がありません。条件を変更して再度検索してください。
    break if !page.search('div.error_pop').empty?

    # 詳細を見るリンクを取集する
    result = []
    page.search("#js-bukkenList").search('.cassetteitem').each do |div|
        info = {}
        info['賃貸種類'] = div.search('.ui-pct--util1').first.text
        info['物件名'] = div.search('.cassetteitem_content-title').first.text
        div.search('tbody').each do |tbody|
            info['階数'] = tbody.search('td')[2].text.strip
            info['賃料'] = tbody.search('td')[3].text.strip
            info['管理費'] = tbody.search('td')[4].text.strip
            temp = tbody.search('td')[5].text.strip
            info['敷礼'] = temp.split('/')[0]
            info['保証'] = temp.split('/')[1]
            info['敷引'] = temp.split('/')[2]
            info['償却'] = temp.split('/')[3]
            info['間取り'] = tbody.search('td')[6].text.strip
            info['専有面積'] = tbody.search('td')[7].text.strip

            div.search('td a').each do |link|
                next if link.text != '詳細を見る'
                info['url'] = link[:href]

            end


            result << info
        end
             res = " #{info['賃貸種類']},#{info['物件名']},#{info['住所']},#{info['賃料']},#{info['管理費']},#{info['敷礼']},#{info['保証']},#{info['敷引']},#{info['償却']},#{info['間取り']},#{info['専有面積']}"
            open("結果.csv", 'a'){|io| io.write(res.tosjis) }
            open('m_url.txt', 'w'){|io| io.write(res.to_s + "\n") }


    end


    result.each_with_index do |e, i|
        if e['url'] =~ /^http/
            page = agent.get(e['url'])
        open('html.txt', 'w'){|io| io.write(page.body) }

        else
            page = agent.get("https://suumo.jp#{e['url']}")
        #open('2.html', 'w'){|io| io.write(page.body) }

        end
        puts page.uri.to_s
        open('url.txt', 'a'){|io| io.write(page.uri.to_s + "\n") }
    end

end until false
コード


下記の部分ですが、なぜ勝手に改行されたのか、不明です。教えてください。

###########################################################################

-*- coding: utf-8 -*-

require 'rubygems'
require 'mechanize'イメージ説明
require 'kconv'

Setting #################

url = 'https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=060&bs=040&ta=26&sc=26102&cb=0.0&ct=9999999&et=9999999&cn=9999999&mb=0&mt=9999999&shkr1=03&shkr2=03&shkr3=03&shkr4=03&fw2=&srch_navi=1'

'https://suumo.jp/chintai/hyogo/sc_kobeshinada/'

'http://suumo.jp/chintai/hyogo/sc_kobeshisuma/'

'https://suumo.jp/chintai/hyogo/sc_kobeshinada/' 

'https://suumo.jp/chintai/hyogo/sc_kobeshinada/nj_204/'

#######################

AGENT_ALIASES = [
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36'
]

agent = Mechanize.new
agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
agent.cookie_jar.clear!
agent.follow_meta_refresh = true
agent.user_agent = AGENT_ALIASES[0]
agent.max_history = 2

i = 0
open("結果.csv", 'w'){|io| io.write("") }
begin
page = agent.get("#{url}pnz1#{i += 1}.html")

open('1.html', 'w'){|io| io.write(page.body) }

puts "#{i} Page"

条件にあう物件がありません。条件を変更して再度検索してください。

break if !page.search('div.error_pop').empty?

詳細を見るリンクを取集する

result = []
page.search("#js-bukkenList").search('.cassetteitem').each do |div|
info = {}
info['賃貸種類'] = div.search('.ui-pct--util1').first.text
info['物件名'] = div.search('.cassetteitem_content-title').first.text
div.search('tbody').each do |tbody|
info['階数'] = tbody.search('td')[2].text.strip
info['賃料'] = tbody.search('td')[3].text.strip
info['管理費'] = tbody.search('td')[4].text.strip
temp = tbody.search('td')[5].text.strip
info['敷礼'] = temp.split('/')[0]
info['保証'] = temp.split('/')[1]
info['敷引'] = temp.split('/')[2]
info['償却'] = temp.split('/')[3]
info['間取り'] = tbody.search('td')[6].text.strip
info['専有面積'] = tbody.search('td')[7].text.strip

div.search('td a').each do |link|
next if link.text != '詳細を見る'
info['url'] = link[:href]

end

result << info
end
res = " #{info['賃貸種類']},#{info['物件名']},#{info['住所']},#{info['賃料']},#{info['管理費']},#{info['敷礼']},#{info['保証']},#{info['敷引']},#{info['償却']},#{info['間取り']},#{info['専有面積']}"
open("結果.csv", 'a'){|io| io.write(res.tosjis) }
open('m_url.txt', 'w'){|io| io.write(res.to_s + "\n") }

end

result.each_with_index do |e, i|
if e['url'] =~ /^http/
page = agent.get(e['url'])
open('html.txt', 'w'){|io| io.write(page.body) }

else
page = agent.get("https://suumo.jp#{e['url']}")

open('2.html', 'w'){|io| io.write(page.body) }

end
puts page.uri.to_s
open('url.txt', 'a'){|io| io.write(page.uri.to_s + "\n") }
end

end until false

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • tyoujobfideshom

    2019/01/12 19:27

    このプログラムはsuumoの賃貸データをエクセルに書込むように作って頂いており、ソースコードが変わって現在使えません。自分なりに修正しましたが、本来1物件の情報を一行に項目ごとに記入しますが、上のエクセルのように、勝手に改行しています。なぜなのか、原因不明です。
    是非教えてください。

    キャンセル

  • otn

    2019/01/12 21:22

    他人には、勝手に改行と、意図的に改行の区別が付きません。
    どこの改行のことですか?

    キャンセル

  • tyoujobfideshom

    2019/01/13 19:17

    suumoからダウンロードした下記の情報は下記のような一行にまとめていきますが、
    賃貸アパート ルポン小川 京都府京都市上京区慈眼庵町 8000円 10万円 20万円 1LDK

    下記のようになってしまいました。原因は分かりません。
    賃貸アパート ルポン小川 京都府京都市上京区慈眼庵町
    8000円" 10万円
    20万円" 1LDK

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る