4 に答える
残念ながら、Tumblr API にはいくつかの制限 (リブログに関するメタ情報の欠如、メモが 50 までに制限されている) があるようで、すべてのメモを取得することはできません。
利用規約により、ページのスクレイピングを行うことも禁止されています。
「サービスへのアクセス中またはサービスの使用中に、次のことを行うことはできません。(...) サービスをスクレイピングし、特に、Tumblr の明示的な事前の書面による同意なしに、サービスからコンテンツ (以下に定義) をスクレイピングすること。」
ソース:
https://groups.google.com/forum/?fromgroups=#!topic/tumblr-api/ktfMIdJCOmc
JS を使用しないと、メモのみを含む別のページが表示されます。上記のブログ投稿の場合、最初のページは次のようになります。
次のページは下部にリンクされています。
- http://ronbarak.tumblr.com/notes/40692813320/4Y70Zzacy?from_c=1358403506
- http://ronbarak.tumblr.com/notes/40692813320/4Y70Zzacy?from_c=1358383221
- http://ronbarak.tumblr.com/notes/40692813320/4Y70Zzacy?from_c=1358377013
- …</li>
(の属性で次の URL を見つける方法については、私の回答を参照してください。)a
onclick
これで、さまざまなツールを使用してデータをダウンロード/解析できるようになりました。
次の wget コマンドは、その投稿のすべてのメモ ページをダウンロードする必要があります。
wget --recursive --domains=ronbarak.tumblr.com --include-directories=notes http://ronbarak.tumblr.com/notes/40692813320/4Y70Zzacy
Fabio が示唆するように、API を使用することをお勧めします。
なんらかの理由でそれができない場合、使用するツールは、投稿内のデータで何をしたいかによって異なります。
- データ ダンプの場合: urllib は、必要なページの文字列を返します。
- HTMLで特定のセクションを探しています:lxmlはかなり良いです
- 手に負えない html で何かを探しています: 間違いなく美しいスープ
- セクション内の特定のアイテムを探しています: beautifulsoup、lxml、テキスト解析が必要です。
- データをデータベース/ファイルに入れる必要があります: スクレイピーを使用します
Tumblr の URL スキームは単純です: url/scheme/1、url/scheme/2、url/scheme/3 など... 投稿の最後に到達し、サーバーがデータを返さなくなるまで。
したがって、強引にスクレイピングを行う場合は、コンテンツ タグなどのデータが空になるまで、ハード ドライブ上のすべてのデータをダンプするようスクリプトに簡単に指示できます。
最後のアドバイスとして、Tumblr サーバーに負荷をかける可能性があるため、スクリプトに小さなスリープ (1000) を入れることを忘れないでください。
tumblrにすべてのメモをロードする方法は? もトピックをカバーしていますが、 unor の応答 (上記) は非常にうまく機能しています。