質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

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

Q&A

解決済

2回答

1638閲覧

スクレイピングのマナーに対し、コードが正しいか不安です

sagentai

総合スコア2

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

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

0グッド

1クリップ

投稿2020/12/05 17:56

スクレイピングのsleep機能等が正しく機能しているか不安です。

特定サイトの特定文字に関する更新有無を知らせるアプリケーションを作成しました。
URLから文字情報をbeautiful soopでスクレイピングし、特定文字の更新があったかを知らせるツールです。

関数 check
URLのスクレイピング > 特定文字のチェック >更新があればメッセージ送信
関数 action
上記 checkを10分に1度実行することを連続して行う

という仕組みです。

スクレイピングのマナーとして、連続したアクセスは避けて閲覧先のサーバーの負担をかけないようにすることは一応は把握しているのですが、自分のコードが迷惑をかけていないか自信がありません。逮捕の事件などもあって心配です。

sleepのかけ方が正しいか、もしくはdef actionの方で10分毎に設定している箇所など、アドバイスいただけないでしょうか。

python

1def check(): 2 for i in range(len(target_url)): 3 data = requests.get(target_url[i], headers = headers) 4 data.encoding = data.apparent_encoding 5 data = data.text 6 soup = BeautifulSoup(data, "html.parser") 7 time.sleep(5) 8 9 detail = soup.find('body').text.encode("UTF-8") 10 11 keyword = 'XXXX' 12 keyword2 = keyword.encode("UTF-8") 13 14 if (keyword2 in detail) == True: 15 (略:メッセージ送付に関わる実行コード) 16 17def action(): 18 schedule.every(10).minutes.do(check) 19 20 while True: 21 schedule.run_pending() 22 time.sleep(5) 23 24action() 25 26

試したこと

def checkのif文が常にTrueになるようにした上で、def actionの部分を1分毎実施に変更して、頻度を確認したところ、正しいと思われる時間間隔でメッセージが来るようになりました。その間スクレイピングがずっと行われていないのであれば良いのですが、、

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

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

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

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

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

hentaiman

2020/12/05 23:59

自分でWEBサイト用意してそこをターゲットに試せば確認出来る事ですよ 赤の他人に迷惑をかける心配を出来る(もしくは自分が捕まる心配だけ?)ならその程度の労力は惜しまないのが賢明です
sagentai

2020/12/06 01:30

ありがとうございます。そういうことにも発想が及ばない初学者のため、大変参考になりました。自分のサイトとアクセスログで確認をして見ます。
guest

回答2

0

ベストアンサー

主には刑事事件よりかは民事事件として発展する事の方が多いでしょう。

現状「スクレイピング」という行為自体を取り締まる法律というものはありません。
「スクレイピング」によって得たデータの扱い方等で(商用等)
著作権にまつわる法律に抵触してしまう可能性も生じ刑事事件に発展する場合はあります。

サイト側の利用規約等でスクレイピングやそれに該当する行為などについて
取り決めや規定がある場合にはそれに従わないと営業妨害として民事に発展する可能性が高いです。
また、それにあたって威力や偽計の要件に満たした場合には刑事に発展する場合もあります。

(スクレイピング自体偽計の要件を満たさない行為であるはずですが、
国内では知識に疎い警察が偽計業務妨害に当たるとし刑事事件として逮捕した有名な例が1件あります。
知識不足による不当とも思われる逮捕で、警察側が不当な逮捕を認めてしまえば大問題になってしまう為
そのまま一番軽い執行猶予処分という形で処理を進めてしまったのではないかと言われている事件です。)

一般的には1秒間に1回以下程度のアクセス頻度であればサーバーに負担がかかる事はないでしょう。
hentaimanさんがおっしゃっている様に、テストをするだけならば自身で用意したサーバーを使用するのが
簡単な事かどうかはさておき最もな意見かもしれませんね。

投稿2020/12/06 03:21

nto

総合スコア1438

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

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

sagentai

2020/12/08 02:26

ntoさん 回答ありがとうございます。トラブルの法的なロジックについてご教示大変ありがたいです。1秒間に1回以下のアクセス頻度という具体的な指標も、とても参考になりました。 自分の用意したサーバーで確認したところ、意図通り(ちょっと思惑より少ないぐらい笑)の頻度でのアクセスでしたので、このまま運用してみようと思います。 具体的なアドバイス、とても助かりました。励みになります。
退会済みユーザー

退会済みユーザー

2020/12/09 04:13

> 一般的には1秒間に1回以下程度のアクセス頻度であればサーバーに負担がかかる事はないでしょう。 「一般的には」という表現は全く適切でありません。 Bot アクセスによりサービスが落ちてしまった場合、たとえそれが10分に一回のアクセスだったとしても、運営が想定する通常のアクセスでは無ければ、問題とみなされる可能性があります。 *Bot によるアクセス被害は、サービス運営者を悩ませる課題であり、時にはまとめて訴訟対象とする可能性すらあります。あなた以外の100人が適当な間隔でアクセスしていたとして、それが重なったアクセスとなりサービス停止すれば、(それが裁判で問題視されるかどうかは別として)あなたの責任は問われる可能性があります。 ちなみに、私の運営するサービスで、サービス負荷が高まったとき、10 秒に一回程度のアクセスを重ねていた Bot 運営者もプロバイダ経由で警告したことがあります。(まぁ、10 秒の根拠は、1分以内に複数アクセスしているアドレスでログにフィルタをかけ、最長が 10 秒だったってだけですけど。) どこの運営も、悪質な Bot は排除していく方針なので、よほどスキルに自信があるか、法的解釈で勝てる場合以外、カジュアルに Bot によるクロールをすることは避けた方が良いです。 最近見た記事を参考にリンクしておきます。 悪質な BOT の遮断 https://qiita.com/MasanobuAkiba/items/6f2e02eceaded9664b14#%E6%82%AA%E8%B3%AA%E3%81%AA-bot-%E3%81%AE%E9%81%AE%E6%96%AD
nto

2020/12/09 05:43

今回は悪質な操作などについてという事ではなく、あくまでも技術の一つである「スクレイピング」というものについて、どういった事でサーバーに対して迷惑をかけてしまう可能性があるのかという事での質問である為、事件性についてや、それらリスクを下げる為の方法についてを回答しております。その為「取り決めや規定がある場合にはそれに従わないと~」と言う事で前置きをしております。それらを前提とした上での「マナー」についての説明となります。 (とはいえ「マナー」とは言いますがbotを操作する側が勝手に「これなら良いだろ」と言っている様な専横な考えであるのもまた事実ですね。) 私の表現で不快な思いをさせてしまったならば申し訳御座いませんでした。
guest

0

あなたがおっしゃっているように、これは刑事事件に関わる重要な事柄です。

あなたの見も知らぬ全く関係ないヒマにしているそこらへんのただのおっさんが、「ああ、だいじょうぶだよ」、と言ったとしましょう。

あなたはそれを鵜呑みにするんでしょうか。

投稿2020/12/06 01:17

y_waiwai

総合スコア88042

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

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

sagentai

2020/12/06 01:34

おっしゃる通りですね。その確認方法にも発想が及ばないほどの初学者ですので、困った末の質問でした。hentaimanさんの追記のおかげで、スクレイピングで人に迷惑をかけていないかの確認方法を調べて実行した上で、わからなければ方法論のアドバイスを聞くべきだったと理解しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問