匿名質問者

さくらのクラウドで、一台のサーバに複数IPを割り当てたのですが、ここから複数IPでクローリングするにはどうしたら良いでしょうか?


#ちなみに、複数IPでクローリングしたいのは、TwitterのAPI制限(1分に1回とか)を少し緩和してデータを取得したいからです。5つくらいのIPなので、Twitterへの負荷は大きくないと思います。

今思いつく方法としては、仮想ホスト化?して、1台のマシンを複数のマシンとして扱って、それぞれでクロールのプログラムを走らせることです。
ただ、やりたいのはTwitterのフォローネットワークを辿っていくことで、複数のマシンでプログラムを走らせると、取得するユーザがかなり被ってくると思われるので、別の方法があればそうしたいです(適切に分散処理してやれば良いのでしょうが)。
例えば、走らせるのは一つのプログラムなんだけど、クローリングするときに、プールしてあるIPを毎回変えながらデータを取得するとかできないのでしょうか。

宜しくお願い致します。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2017/09/27 21:00:06

回答1件)

匿名回答2号 No.1

簡単ですよ
ソケットに毎回違うアドレスをbindするだけです
"socket bind 接続元アドレス"で検索してみてください

匿名質問者

ありがとうございます。
調べてみてPythonでソケットを使うやり方も少し分かったのですが、今回はTwitterのAPIを使っていて、しかもOAuth認証部分を別のライブラリ(Requests-OAuthlib )を使っておりまして、ここからソケット通信と組み合わせるやり方が分からずでした.... orz

低レイヤーのプログラミングをするときTwitterのAPIは使えるのかもよく分からず...
しかもOAuth認証部分だけでも難しいようなので、今はライブラリを使ってるんですが、ソケットの話が出てくるとこの部分も自分でやる必要が出て来るのかもしれないですね。

私はレベルが低いので、別の方法を模索してみようかと思います....

#他のQAサイトにも質問したのですが流石はてなで、はてなと2ちゃんねる以外では回答が得られませんでした...

2017/09/23 17:36:51
  • 匿名回答1号
    匿名回答1号 2017/09/20 23:07:44
    APIキーを取得して収集した方が効率が良くありませんか?
  • 匿名質問者
    匿名質問者 2017/09/23 17:38:03
    おお。そんな方法があるかもしれないのですね。
    同一IPで複数のAPIキーでクロールするのって制限かからないんですかね。
    ちょっと試してみたいと思います!
  • 匿名質問者
    匿名質問者 2017/09/23 18:44:40
    APIキーを取得するには、テキストメッセージを受信可能な携帯電話番号が必要のようでしたので、できませんでした...

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません