数年前または数か月前に行った、Google のウェブ履歴にある古い Google 検索を取得したいと考えています。それらをすべてプログラムで取得するにはどうすればよいですか?
https://www.google.com/history/?output=rssは最近の Google 検索のみを提供しますが、すべてではありません。
また、この質問: Google の検索履歴を取得するにはどうすればよいですか? 私の質問に対する答えはありません!
数年前または数か月前に行った、Google のウェブ履歴にある古い Google 検索を取得したいと考えています。それらをすべてプログラムで取得するにはどうすればよいですか?
https://www.google.com/history/?output=rssは最近の Google 検索のみを提供しますが、すべてではありません。
また、この質問: Google の検索履歴を取得するにはどうすればよいですか? 私の質問に対する答えはありません!
月、日、年をパラメーターとして渡して、特定の日の履歴を取得できます。
例: https://www.google.com/history/lookup?month=12&day=1&yr=2010&output=rssは 2010 年 12 月 1 日です。
履歴全体はおろか、丸 1 か月または 1 年の履歴を取得する方法はありません。しかし、パラメーターに関するこの情報により、少なくとも、毎回 1 日さかのぼる何らかのループで履歴全体を取得できるようにする必要があります。あまりにも短い時間でリーチしすぎないように注意してください。
HTML をページごとに解析してから、データを取得する必要があります。代替手段はないと思います。
すべてのページに戻る必要はありませんが、ページ全体を解析する必要はありません。常にエントリの前にあるhtmlを探してください。私からは、グーグルのウェブ履歴を起動していくつかの簡単な検索を行っています。履歴ページを見ると、検索した各文字列は次のとおりです。<td style="padding:3px 0"><table id=bkmk_view_ class=noborder ><tr><td><table class="elem noborder"><tr><td class="grey" nowrap>Searched for </td><td nowrap><a title="http://www.google.com/search?q=
その後に&
(アンパサンド)が続きます。この先行するhtmlのシーケンスはページ上で一意であり、履歴検索用語がリストされている場合にのみ発生します。
2つの用語を使用する場合、用語の間に+が付きます。さまざまな検索モードに関する他の規則については、すべてを説明していません。
BalusCのメソッドを使用してパラメーターを渡す場合は、htmlを取得し、ドキュメントで前述の文字列を検索して(必ず「\」およびその他の特殊文字)、&文字に到達するまで次の文字列をコピーできるようです。次に、ページ全体ではなく、検索語を解析するだけです。最後に到達するまでソースコードを調べてから、ループ内の次の反復に進みます。
これは非常に難しいと思います。
これであなたの質問に完全には答えられないことは承知していますが、少なくとも Web ページは保存されている可能性があります。過去の日付から Web ページを再作成できる組織やツールがあります。たとえば、http://www.mementoweb.org/を参照してください。
更新: Memento がデジタル保存賞を受賞したことを知りました (http://www.dpconline.org/newsroom)。
static void GetGoogleWebHistory(int month, int day, int yr, string UserName, string Pass)
{
string iURL = "http://www.google.com/history/lookup?month=" + month + "&day=" + day + "&yr=" + yr + "&output=rss";
WebClient client = new WebClient();
GDataCredentials gdc = new GDataCredentials(UserName, Pass);
RequestSettings rs = new RequestSettings(Guid.NewGuid().ToString(), gdc);
XmlDocument XDoc = new XmlDocument();
XDoc.LoadXml(client.DownloadString(iURL));
}