私は、リアルタイムのウィキペディアの編集をストリーミングする node.js プロジェクト (基本としてウィキストリームを使用しているため、完全に自分のコードではありません) を使用しています。このコードは、各編集を構成要素に分解し、オブジェクトとして保存します ( https://gist.github.com/2770152の要点を参照)。部分の 1 つは URL です。各編集を解析するときに、編集前と編集後のウィキペディア ページの違いを示す各編集の URL をスクレイピングして、違いを取得することが可能かどうか疑問に思っています (「diffchange diffchange-inline」と呼ばれるスパン クラス内)。 、たとえば)、それをオブジェクトの別のプロパティとして追加します。それは単なる文字列である可能性があり、完全に構造化されている必要はありません。
私はnodeioを使用してみましたが、次のようなコードがあります (具体的には、コメント (m[6]) で破壊行為の可能性としてマークされた編集のみをスクレイピングしようとしています):
if (m[6].match(/vandal/) && namespace === "article"){
nodeio.scrape(function(){
this.getHtml(m[3], function(err, $){
//console.log('getting HTML, boss.');
console.log(err);
var output = [];
$('span.diffchange.diffchange-inline').each(function(scraped){
output.push(scraped.text);
});
vandalContent = output.toString();
});
});
} else {
vandalContent = "no content";
}
条件文にヒットすると、一度スクレイピングしてからプログラムを閉じます。目的のコンテンツをオブジェクトのプロパティとして保存しません。条件が満たされない場合、「コンテンツなし」に設定された vandalContent プロパティが保存されます。
私が疑問に思っているのは、その場でこのようにこすることさえ可能ですか? スクレイピングがプログラムを動かしていませんか? 同様の結果を得るために提案された他の方法はありますか?