我想要检索旧的Google搜索,这些搜索是我几年/几个月后所做的,并且存在于Google网络历史记录中。我怎么能以编程方式检索它们呢?
https://www.google.com/history/?output=rss仅提供最近的Google搜索,但不是全部搜索。
同样这个问题:How can I retrieve my Google search history?没有为我的问题提供任何答案!
答案 0 :(得分:14)
您可以将月,日和年作为参数传递,以获取特定日期的历史记录。
E.g。 https://www.google.com/history/lookup?month=12&day=1&yr=2010&output=rss 2010年12月1日。
没有办法获得整整一个月或一年的历史,更不用说整个历史了。但是这些关于参数的信息必须至少使你能够在某个循环中获得整个历史记录,这个循环在每次进一步回溯中。要小心,你不要在太短的时间内吮吸太多。
答案 1 :(得分:4)
你真的需要逐页解析HTML然后获取你的数据,因为我认为没有其他选择!
答案 2 :(得分:3)
我认为这将非常困难。
我知道这并不能完全回答你的问题,但至少可以保留网页。有些组织和工具允许您从过去的日期重新创建网页 - 例如参见http://www.mementoweb.org/。
更新:我刚刚获悉Memento已获得数字保存奖(http://www.dpconline.org/newsroom)
答案 3 :(得分:3)
我知道你不想回头看每一页,但你真的不需要解析整个页面,只需查看总是在一个条目之前的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序列在页面上是唯一的,仅在列出历史搜索词时出现。
如果您使用两个术语,则术语之间会得到+。针对不同搜索模式的其他约定,我没有详细介绍它们。
看起来如果你使用BalusC的方法传递参数,那么你可以检索html,在文档中搜索我提到的字符串(确保\“和其他特殊字符),然后复制下一个字符串直到你到达然后,您需要做的就是解析搜索词,而不是整个页面。浏览源代码直到结束,然后转到循环中的下一个迭代。
答案 4 :(得分:2)
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));
}