🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

3640閲覧

ECサイトの在庫状況を高速で取得する方法について

l_lol_lol_ll

総合スコア10

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/11/18 11:17

編集2019/11/18 12:34

前提・実現したいこと

ECサイトの在庫状況を数秒ごとに監視するツールを作成したいです。

人気商品の在庫状況を確認したいので、1~3秒ごとに在庫を監視する方法を調査しています。
商品ページのHTMLファイルを取得し、HTMLファイルから在庫状況の文言(在庫あり/在庫なし)を抽出するという方法を試してみたのですが、HTMLを取得するのに10秒近くかかってしまします。

google.comなど情報量の少ないページは1秒ほどで取得できるのですが、情報量の多いECサイトの商品ページだと時間がかかってしまいます。
HTMLファイルの大きさは150KB程で必要な情報は1行で済むのですが、効率よく取得する方法が不明です。
何かいい方法をご存知の方がおられましたら、ご教示お願いします。

~追記~
規約でツールを使って情報収集が認められているサイトでしか監視は行いません。APIのないサイトを監視したいのでAPIは使わない方法を探しています。また、長期的に監視するつもりもありません。
~~~~

よろしくお願いします。

試したこと

HTMLの取得はLinuxのcurlコマンドとPythonのrequests.getコマンドを試しました。
・curl

$ curl -sS -o ./output $URL

・requests.get

output=requests.get('URL')

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2019/11/18 12:14

Amazonは規約により「ロボットなどのデータ収集・抽出ツールの使用」は認められていないようです。
l_lol_lol_ll

2019/11/18 12:17

大変失礼しました。調査不足でした。Amazonでの監視は断念いたします。規約で情報の収集が認められているサイトのみ監視を行おうと思います。
guest

回答1

0

APIを使うのが良いかと思います。
例えば、Amazonでは"Product Advertising API"が用意されてるそうです。

HTMLファイルを取得する方法では頻度や手法によっては、
相手サーバーに負荷をかけてしまいアクセス制限をくらう可能性もあります。

投稿2019/11/18 11:30

KonPota

総合スコア121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

l_lol_lol_ll

2019/11/18 11:59

ご回答ありがとうございます。APIの説明が不足しておりました。大変失礼しました。AmazonのAPIを使うのには条件があり一般のユーザはいきなり使えません(アフィリエイトの実績が必要)。また他のECサイトのAPIも試したのですが、在庫状況がリアルタイムに反映されず正しい情報が取得できない為、自作しようと思いました。相手のサーバにも負荷をかけ続けないように長期的には動かさず、監視を並列して行いません。アクセス制限をもらったら解除されるまで待ってまた動かそうと考えていました。岡崎市立中央図書館事件では1秒に1アクセスは常識的と捉えられているようなので数秒単位なら問題ないのかなと考えております。
alg

2019/11/18 12:19

> 数秒単位なら問題ないのかなと考えております。 問題ないかもしれませんし、問題あるかもしれません。重要なのは、問題あるかどうかの判断ができるのはAmazonだけ(あるいは訴訟になったら裁判所?)、ということです。 Amazonが「問題ある!」と判定した場合に発生するコスト(Amazonとのやりとりにとられる時間や、場合によっては訴訟リスクなど)を許容できるのであれば、スクレイピングは選択肢としてあり得るのかもしれません。ただ、たいていの場合は余計なリスクは避けるに越したことは無いと思います。
l_lol_lol_ll

2019/11/18 12:23

大変申し訳ございませんでした。Amazonでの監視は行いません。規約でツールでの情報収集が認められている場合のみ行おうと思います。失礼しました。
alg

2019/11/18 12:23

一方、スクレイピングではなくAPIであれば、公式にリクエスト数を明示してくれることもあります。Amazonの場合は、公式に「8,640~864,000リクエスト/日」と明示していますので、その範囲内であれば安心して使えます。 https://affiliate.amazon.co.jp/help/node/topic/GW65C7J2CSK7CA6C/
alg

2019/11/18 12:29 編集

ああ、質問を編集されたのですね。Amazonは対象外の旨、わかりました。 (とはいえ、ツールによる情報収集を規約で認めているECサイトなんてあるのかな、という疑問はありますが)
m.ts10806

2019/11/18 13:26

ないでしょうね。私なら絶対に禁止します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問