今日から消費税が10%になりました。
通販サイトなどでプログラムが税額を計算する部分はテスト済みかと思いますが、案外ベタ書きしている箇所も散在し、人の目で探すのは大変です。
- 利用ガイド(送料540円とか)
- ランディングページ
- 商品の説明欄
そういった抜け漏れを探す簡単なクローラーを作ってみました。
使い方
npm i -g taxmonkey
taxmonkey 'https://www.ideamans.com/'
taxmonkey.tsv
ファイルに次のような結果が出力されます。
URL 行番号 結果 詳細 HTML
https://www.ideamans.com/ 0 該当なし
https://www.ideamans.com/mt/sheetasset/ 0 該当なし
https://www.ideamans.com/lightfile/managed/pricing/ 455 8%税込の可能性 [ 10,000円/サイト]は税別 9,260円 の8%税込金額を含む可能性があります 10,000円<small>/サイト</small>
ロジック
以下のように8%っぽい金額を探します。
- HTMLのテキスト要素から数値を探す。
- その前後に
¥
、円
があれば金額表記とみなす。 - ただし、前後に
税別
や税抜
がある場合は除外する。 - 税別金額を逆算してキリのいい数字(10円単位)になったら8%表記の可能性あり。
ぶっちゃけ精度は高くありません。保険として使われることを想定してます。
カスタマイズ
簡単なオプションがあります。例えば税別価格が100円単位のサイトであれば、-r 100
とすることで少し精度が上がります。
taxmonkey <url>
URLを起点にクローリングを開始し、「税込8%っぽい」金額表記をリストアップします。
位置:
url クローリングを開始するURL
オプション:
--help ヘルプを表示 [真偽]
--version バージョンを表示 [真偽]
--output, -o 出力先のファイルパス [デフォルト: "./taxmonkey.tsv"]
--concurrency, -c 並列実行数 [デフォルト: 8]
--limit, -l 最大ユニークURL数 [デフォルト: 1000]
--device, -d クローリングを行うデバイス(mobile|pc)[デフォルト: "mobile"]
--round, -r キリのいい金額の単位 [デフォルト: 10]
--timeout 各ページのタイムアウト秒数 [デフォルト: 30]
--rate 税率 [デフォルト: 0.08]
--host 開始URL以外でリンクをたどるホスト名 [デフォルト: ""]
--verbose, -v エラーや警告を標準エラーに出力 [真偽] [デフォルト: false]
--quiet, -q プログレスバーを非表示 [真偽] [デフォルト: false]
--ext HTMLドキュメントとみなす拡張子(カンマ区切り)
[デフォルト: ".html,.htm,.php,.jsp,.asp,.aspx"]
--index インデックスドキュメントとみなすファイル名(カンマ区切り)
[デフォルト: "index.html,index.htm,index.php,index.jsp,index.asp,index.aspx"]