打ち消し線### 前提・実現したいこと
ここに質問の内容を詳しく書いてください。
下記のコードでcsvでデータを取得した際にお店の名前と住所が文字化けしてしまいます。
初心者で質問の仕方がわかっておらず大変恐縮ですが教えていただけるととても助かります。
発生している問題・エラーメッセージ
エラーメッセージ
require 'open-uri'
require 'nokogiri'
require 'csv'
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin16]
Nokogiri (1.8.2)
def set_html(url)
#取得するhtml用charset
charset = nil
html = open(url) do |page|
#charsetを自動で読み込み、取得
charset = page.charset
#中身を読む
page.read
end
# Nokogiri で切り分け
return Nokogiri::HTML.parse(html,nil,charset)
end
def save_csv(shop_inf_list)
test = CSV.open('./test.csv','a')
test.puts shop_inf_list
test.close
end
def find_shop_inf(shop_name,url)
contents = set_html(url)
# ここら辺で必要な情報をhtmlから取り出す
address = contents.xpath('//p[@class="rstinfo-table__address"]').inner_text
# p address
phone = contents.xpath('//*[@id="column-side"]/div[1]/div/div/div/div/div[1]/div[1]/p').inner_text.gsub(/(\n| )/,"")
# p phone
shop_inf_list = [shop_name,url,address,phone]
save_csv(shop_inf_list)
end
################################################################################################
同時にたくさんのベージをやりすぎない、dos攻撃になるかも
東京、ランキング表示で検索したurl
urls = ['https://tabelog.com/tokyo/rstLst/1/?Srt=D&SrtT=rt&sort_mode=1','https://tabelog.com/tokyo/rstLst/2/?Srt=D&SrtT=rt&sort_mode=1']
urls.each do |url|
contents = set_html(url)
count = 0
contents.xpath('//a[@class="list-rst__rst-name-target cpy-rst-name js-ranking-num"]').each do |node|
p node.inner_text
p node.attribute('href').value
find_shop_inf(node.inner_text,node.attribute('href').value)
end
end
該当のソースコード
ソースコード
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー