LoginSignup
2
0

IGRの時刻表をスクレイピング

Posted at

Functionノードを使わないでスクレイピングに挑戦します。

@n0bisuke さんのNodeREDでみんな大好きIGRの時刻表をスクレイピングのインスパイア記事です。

作ったフロー

image.png

injectノード(タイムスタンプ)

特にプロパティは変更していないです。
フローを発火します。

httpノード(滝沢駅)

URLに以下を入力します。
https://igr.jp/station/takizawa

HTMLノード(上り/下り)

Httpノードで取得したHTMLをHTMLノードで必要な箇所のみ抽出します。
抽出する要素は以下の様に指定します。

上り

#igr-eki-diaup > div > div:nth-child(1) > table > tbody > tr

image.png

下り

#igr-eki-diadown > div > div:nth-child(1) > table > tbody > tr
image.png

得られたテキストデータ

データの前後に余計な改行コードが見えます。
例)
image.png

Changeノード(Trim)

抽出で得られたテキストデータには、複数の改行コードが含まれています。Changeノードでトリムします。さらに、msg.topicに上りのデータか下りのデータか名前を付けておきます。

上り

image.png

下り

image.png

得られたテキストデータ

トリムされて、データとデータの間にはスペースになっています。
例)
image.png

CSVノード

CSVノードのプロパティは区切り文字を空白にします。
image.png
出力されたデータは配列にしておきます。

image.png

Changeノード(整形)

上りか下りかの情報をJSONデータに含めたいので、Changeノードで整形します。
image.png

image.png

debugノード

特にプロパティは変更していないです。

フローの実行結果

image.png

{"title":"滝沢駅上り","items":[{"時刻":"6:16","行先":"盛岡","のりば":3},{"時刻":"6:46","行先":"矢幅※","のりば":3,"記事":"JR東北本線直通"},{"時刻":"7:09","行先":"盛岡","のりば":3},{"時刻":"7:21","行先":"日詰","のりば":3,"記事":"JR花輪線から東北本線直通"},{"時刻":"7:32","行先":"北上","のりば":3,"記事":"JR東北本線直通"},{"時刻":"7:42","行先":"盛岡","のりば":3},{"時刻":"7:50","行先":"日詰","のりば":2,"記事":"JR東北本線直通"},{"時刻":"8:01","行先":"盛岡","のりば":3,"記事":"JR花輪線から"},{"時刻":"8:18","行先":"盛岡","のりば":2},{"時刻":"8:35","行先":"盛岡","のりば":2},{"時刻":"8:45","行先":"盛岡","のりば":3},{"時刻":"9:08","行先":"盛岡","のりば":3,"記事":"土休日運休"},{"時刻":"9:23","行先":"盛岡","のりば":3,"記事":"JR花輪線から"},{"時刻":"9:43","行先":"盛岡","のりば":3},{"時刻":"9:53","行先":"北上","のりば":2,"記事":"JR東北本線直通"},{"時刻":"10:10","行先":"盛岡","のりば":3},{"時刻":"11:03","行先":"盛岡","のりば":3},{"時刻":"11:32","行先":"盛岡","のりば":3},{"時刻":"12:24","行先":"盛岡","のりば":3,"記事":"JR花輪線から"},{"時刻":"12:43","行先":"盛岡","のりば":3},{"時刻":"13:03","行先":"盛岡","のりば":2}]}

まとめ

functionノードを使わなくても、時刻表データをJSON形式にできました。

2
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
2
0