機能 ショートカットキー
リファレンス(参考URL)一覧へ移動 R
記事URLをMarkDownとしてコピー Ctrl+M
前のコードタグへ移動 Ctrl+←
次のコードタグへ移動 Ctrl+→
ヘルプを表示・非表示 H
Tips
- ショートカットキーは記事上で有効です。ヘッダー/フッター付近では機能しないことがあります。
- コードタグ移動機能がうまく動かないときは、Shift+F5でページを更新してみてください。
- このウィンドウを閉じるには、Hキーをもう一度押してください

タウンワークから案件の交通情報をスクレイピングして最寄り駅からの距離を出力する

AD

プログラミング

タウンワーク見てて、この駅って最寄り駅(自分の地域)からどれくらいかかるんだろう…と思うことはないでしょうか。
僕は東京住みはじめて1ヶ月しかたってなくて、東京の駅のことなんかさっぱりで、有名な駅がどこらへんにあるか、どれくらいかかるか、なんて全くわかりません。

タウンワークって、案件それぞれに最寄り駅とか駅から徒歩何分とは書いてあるけど、最寄り駅とか近いのかとかってわからないですよね。

ほんとはタウンワーク側で、最寄り駅なんかを設定して、近い順番にソートするとか、何時間くらいで着けるとか表示するとか実装するべきだと思うのですが、そういう機能がなかったので。

Rubyで書いてみました。

urlを、案件一覧のページに、
@now_location と @APIKEY は各自で埋めてください。

require "open-uri"
require "rubygems"
require "nokogiri"

# タウンワークから案件の交通情報をスクレイピングする https://townwork.net/tokyo/kwd_0000000018/

Encoding.default_external = 'UTF-8'

url = "https://townwork.net/tokyo/kwd_0000000018/"

charset = nil
html = open(url) do |f|
  charset = f.charset
  f.read
end
doc = Nokogiri::HTML.parse(html, nil, charset)

@list=[]
p doc.xpath('//*[@id="jsi-content-wrapper"]/div[1]/div[4]/div[*]/div/a/div/table/tbody/tr[2]/td/p/text()').each{|i|
  i=i.text ;
  i=i.gsub(/徒歩.{1,3}分/,"") ;
  # p i
  @list << i
}
# p @list # => ["四ツ谷駅", "大森駅", "新大久保駅", "中野駅", "飯田橋駅", "八王子駅", "府中駅", "神田駅"]

# Google Maps APIで駅や場所の2点距離(km)を出力する
# __END__
require 'net/http'
require 'json'

Encoding.default_external = 'UTF-8'

@now_location = "桜上水駅"

if @list
else
@list="
八王子駅
八王子
"
@list=@list.split("\n").compact.reject(&:empty?)
end

until @list.empty?
  # puts 1
  # @location="八王子"
  @location = @list.pop
  @APIKEY = ""

  url="https://maps.googleapis.com/maps/api/distancematrix/json?origins=#{@now_location}&destinations=#{@location}&mode=walking&language=ja&key=#{@APIKEY}"
  uri = URI(URI.encode(url))
  response = Net::HTTP.get(uri)
  data=JSON.parse(response)

  puts @location + ":" + km= data['rows'][0]['elements'][0]['distance']['text'] ;
  # puts @location + ":" + km= data['rows'][0]['elements'][0]['duration']['text'] ; # => 電車での時間ではなく、徒歩での時間?なので使えない。

end


SPONSOR

オンラインブートキャンプ全12コースの「ウケ放題」 AD

コメントを残す

Close Menu