Googleグループのディスカッションクローラーにアプローチする方法

StackOverflow https://stackoverflow.com/questions/2211887

質問

RSSの演習として、私はこのグループに関するほとんどすべてのUNIXディスカッションを検索できるようにしたいと思います。

comp.unix.shell

私は十分なPythonを知っており、基本的なRSSを理解していますが、私は立ち往生しています...特定の日付の間にすべてのメッセージをつかむにはどうすればよいですか、または少なくとも最近のNTHとMTHの間のすべてのメッセージをつかむにはどうすればよいですか?

高レベルの説明、擬似コードは大歓迎です。

ありがとうございました!

編集:

私は100以上のメッセージに戻ることができますが、このURLを使用するなど、一度に10のメッセージを解析するようなものをつかむことはありません。

http://groups.google.com/group/comp.unix.shell/topics?hl=en&start=2000&sa=n

より良い方法がなければなりません。

役に立ちましたか?

解決

Randalが述べたように、これはGoogleのTOSに違反します - しかし、これらの制限なしに別のサイトで仮説的または使用するために、あなたは何かを簡単にリグすることができます urllibBeautifulSoup. 。 Urllibを使用してページを開き、BeautifulSoupを使用してすべてのスレッドトピックをつかみます(さらに深くcraいたい場合はリンク)。次に、結果の次のページへのリンクをプログラム的に見つけてから、別のurllibを作成して2ページに移動し、プロセスを繰り返します。

この時点で、すべての生データを使用する必要があります。それから、データを操作して検索機能を実装するだけの問題です。

他のヒント

Googleグループをクロールすることは違反します Googleの利用規約, 、具体的にはフレーズ:

ロボット、スパイダー、サイト検索/検索アプリケーション、またはその他のデバイスを使用して、サービスの任意の部分を取得またはインデックスを付けたり、不正な目的でユーザーに関する情報を収集したりします

あなたはあなたがそんなに公然とそれをしていることを発表したいですか?そして、あなたはあなたの結果の結果を盲目にしていますか?

nの最近の場合、パラメーターを渡すことができるようです ?num=50 またはフィードURLの何か

たとえば、comp.unix.shellグループからの50の新しいメッセージ

http://groups.google.com/group/comp.unix.shell/feed/atom_v1_0_msgs.xml?num = 50

そして、次のようなフィードパージャープログラムを受け取ります ユニバーサルフィードパーサー

がある .update_parsed オプション フィードパージャー, 、それを使用して、特定の日付範囲内でMSGを確認できます

>>> e.updated_parsed              # parses all date formats
(2005, 11, 9, 11, 56, 34, 2, 313, 0)

Yahoos YQLについて考えましたか?それほど悪くはなく、多くのAPIにアクセスできます。 http://developer.yahoo.com/yql/

グループがサポートされているかどうかはわかりませんが、RSSフィードにアクセスできます。役に立つかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top