数年前に小さなJavaScriptを書いて、最新のツイート(ユーザー)を取得し、それを解析してリンクや日付などを表示しました。
このjson呼び出しを使用してツイートを取得しましたが、機能しなくなりました。
http://Twitter.com/statuses/user_timeline/radfan.json
エラーを返すようになりました:
{"errors":[{"message":"Sorry, that page does not exist","code":34}]}
私はAPIバージョン(以下のコード)の使用を検討しましたが、これには認証が必要です。これは、私のプロフィールページに公開されている私のウェブサイトに最新のツイートを表示するだけなので、むしろ行う必要はありません:
http://api.Twitter.com/1/statuses/radfan.json
TwitterのAPIの変更に対応できなくなったため、TwitterのAPIの変更に追いついていません。この問題を回避する方法はありますか、それとも不可能ですか。
ドキュメント でわかるように、REST= APIを使用すると、これを行うために OAuthトークン が必要になります。幸いなことに、 検索 (OAuthを使用しない)を使用し、from:[USERNAME]
演算子
例: http://search.Twitter.com/search.json?q=from:marcofolio
そのユーザーからのツイートを含むJSONオブジェクトを提供します。
object.results[0]
最後のツイートを提供します。
以前は、Search APIは、何らかの形式のOAuthを必要としない唯一のTwitter APIでした。現在は認証が必要です。
TwitterのSearch APIは、サードパーティの買収から買収されました-彼らはそれをサポートすることはめったになく、それが存在することさえ熱心に思われないようです。それに加えて、key:valueペアの[〜 #〜] json [〜#〜]または[〜#〜] xml [〜#〜]ファイルが返されます。
これを聞いたとき、私はショックを受けました。最小限のコードを使用して単純な[〜#〜] get [〜#〜]要求(タイムラインの表示など)を行う方法を見つけるのに長い時間を費やしました。
関連するペイロードを確保するために、OAuthルートに行くことにしました。これを行うには、サーバー側の言語が必要です。 JavaScriptはエンドユーザーに表示されるため、必要なkeysおよびを含めることはお勧めしません.jsファイルのsecrets。
大きなライブラリを使いたくなかったので、私に対する答えは[〜#〜] php [〜#〜]と@Riversの答え ここ 。 @ lackovic10によるその下の答えは、認証にクエリを含める方法を説明しています。
これにより、新しいOAuth要件でTwitterのAPIを使用する方法について考える時間を節約できることを願っています。
ログインせずに、高度な検索でTwitterにアクセスしてスクレイピングできます。
GETリクエスト
基本的な検索リクエストを実行すると、以下が得られます。
https://Twitter.com/search?q=Babylon%205&src=typd
デフォルトでは、Twitterは上位25件の結果を返しますが、all
をクリックすると、リアルタイムのツイートを取得できます。
https://Twitter.com/search?f=realtime&q=Babylon%205&src=typd
JSONコンテンツ
より多くのツイートがAJAX経由でページにロードされます。
https://Twitter.com/i/search/timeline?f=realtime&q=Babylon%205&src=typd&include_available_features=1&include_entities=1&last_note_ts=85&max_position=Tweet-553069642609344512-553159310448918528-BD1UO2FFu9QAAAAAAAAETAAAAAcAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
max_position
を使用して、次のツイートをリクエストします
次のjson配列は、コンテンツをスクレイピングするために必要なすべてを返します。
https://Twitter.com/i/search/timeline?f=realtime&q=Babylon%205&src=typd
DOM要素
抽出に使用できるDOM elements
のリストがあります
著者のTwitterハンドル
div.original-Tweet[data-Tweet-id]
著者の名前
div.original-Tweet[data-name]
作成者のユーザーID
div.original-Tweet[data-user-id]
投稿のタイムスタンプ
span._timestamp[data-time]
投稿のタイムスタンプ(ミリ秒)
span._timestamp[data-time-ms]
ツイートのテキスト
p.Tweet-text
リツイート数
span.ProfileTweet-action–retweet > span.ProfileTweet-actionCount[data-Tweet-stat-count]
ファボの数
span.ProfileTweet-action–favorite > span.ProfileTweet-actionCount[data-Tweet-stat-count]
リソース
JSONで認証されていないツイートを探している場合、これは機能するはずです: https://github.com/cosmocatalano/Tweet-2-json
TweetJS.com などのTwitter APIラッパーを使用できます。これは、Twitter APIの機能の限られたセットを提供しますが、認証は必要ありません。このように呼ばれています。
TweetJs.ListTweetsOnUserTimeline("PetrucciMusic",
function (data) {
console.log(data);
});
http://anyorigin.com を使用して最新のツイートのTwitterサイトをスクレイピングするクイックハック(実際にはハックであり、将来の証拠ではないことに注意して使用する必要があります)です。
http://codepen.io/JonOlick/pen/XJaXBd
Anyoriginを使用して(使用するには料金がかかります)HTMLを取得します。次に、jqueryを使用してHTMLを解析し、関連するツイートを抽出します。
モバイルサイトのツイートでは、.Tweet-textクラスのdivを使用しているため、これは非常に簡単です。
関連するコードは次のようになります。
$.getJSON('http://anyorigin.com/get?url=mobile.Twitter.com/JonOlick&callback=?', function(data){
// Remap ... utf8 encoding to ascii.
var bar = data.contents;
bar = bar.replace(/…/g, '...');
var el = $( '<div></div>' );
el.html(bar);
// Change all links to point back at Twitter
$('.Twitter-atreply', el).each(function(i){
$(this).attr('href', "https://Twitter.com" + $(this).attr('href'))
});
// For all tweets
$('.Tweet-text', el).each(function(i){
// We only care about the first 4 tweets
if(i < 4) {
var foo = $(this).html();
$('#test').html($('#test').html() + "<div class=ProfileTweet><div class=ProfileTweet-contents>" + foo + "</div></div><br>");
}
});
});