2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Webサイト上の税率8%っぽい箇所を探すクローラーを作った

Last updated at Posted at 2019-10-01

今日から消費税が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%っぽい金額を探します。

  1. HTMLのテキスト要素から数値を探す。
  2. その前後にがあれば金額表記とみなす。
  3. ただし、前後に税別税抜がある場合は除外する。
  4. 税別金額を逆算してキリのいい数字(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"]
2
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?