2021.04.26 コラム
- API・データ検証奮闘記
- TREASURE DATA
【API・データ検証奮闘記】#6.WorkflowでHTMLデータを取得してみた
本コラムでは、APIやデータに関連する言語などを無邪気に触ってみた備忘録として、ライトに記載していきます!
「ちょっと違くない」「他にいい方法あるのに」といったご意見もあるかと思いますが、何卒お手柔らかに!!
<プロフィール>
富松 良介
2017年、株式会社サイバー・コミュニケーションズ(CCI)入社。Oracle Bluekai・Treasure Data等のDMPや、AWS・GCP等のPublicCloud領域を担務。2019年6月よりデータの利活用を推進するコンサルティング会社「株式会社DataCurrent」に出向し、事業会社の基盤構築・運用や自社ソリューション開発を担当。
●HTMLデータ取得をしてみた

ボス
Webサイトのデータをとって欲しい。

モブ
かしこまり!!
TreasureData workflowを活用したHTMLデータ取得の手順から取得した結果までをご紹介致します。
●ステップ1. どうやって取得できるか調査してみた

モブ1
有料のツール契約する!!

モブ2
HTMLソースから気合と根性で手動コピペ!!

モブ3
Python!!

意識高いモブ
Workflowなら取得から格納までワンストップだぜ!!

モブ
Treasure Data Workflowで取得することにしよう!!

ボス
それでやってくれ。
●ステップ2. データ取得してみた
早速Workflowでデータを取得してみる。
弊社コーポレートサイトの、最新の新着情報を取得してみます!
※データ取得する際は、サイト利用規約等を確認し実施してください。
timezone: Asia/Tokyo
_export:
td:
database: your_database
table: your_table
base_endpoint: https://www.datacurrent.co.jp/
date: ${moment(session_time).format("YYYY-MM-DD HH:mm:ss")}
+get_data:
for_each>:
directory: ['news-latest']
_do:
+request:
http>: ${base_endpoint}${directory}/
method: GET
store_content: true
+write_to_table:
td>:
query: |
SELECT
'${directory}' AS directory,
regexp_extract(
'${(http.last_content).replaceAll(regex, "").match("<tr>.+?</tr>")}',
'[\d]{4}\.[\d]{2}\.[\d]{2}'
) AS relese_date,
regexp_replace(
'${(http.last_content).replaceAll(regex, "").match("<tr>.+?</tr>")}',
'^.+?<span class=\\"el_news\\">|</span>.+?$',
''
) AS content_category,
regexp_replace(
'${(http.last_content).replaceAll(regex, "").match("<tr>.+?</tr>")}',
'^.+?alt=\\\"|\\.*?$|</a></td></tr>\"\]$',
''
) AS content_title,
'${get_date}' AS get_date
insert_into: ${td.database}.${td.table}
engine: presto
できた!!!
●ステップ3. 取得結果

●最後に
弊社では、定点的なリサーチやトレンドの分析をおこなっています。性別や年代等の属性を検索トレンドのダッシュボード提供等様々なパッケージをご用意しておりますので、お気軽にお問い合わせください。
本データに関するお問い合わせは下記にて承ります。
株式会社DataCurrent
info@datacurrent.co.jp