我想编写一个Java函数grabTopResults(String f)
,以便grabTopResults("automata theory")
在scholar.google.com上为“自动机理论”返回前100篇引用论文的列表。
有没有人建议图书馆能让我的生活变得轻松?
谢谢!
答案 0 :(得分:4)
由于我确信谷歌能够负担得起带宽,我将忽略谷歌的T& C这是不道德/非法/禁止的问题
您需要做的第一件事是弄清楚您需要发出哪些HTTP请求(或多个请求)才能获取包含您需要的数据的页面。一旦弄清楚这一点,使用HttpClient从Java代码发出相同的请求。上一个链接显示了解释如何执行此操作的示例代码。
一旦下载了相关页面的内容,您就需要使用HTML解析器来提取您感兴趣的数据.peperg建议的Jericho parser是一个不错的选择。
如果Google警察来敲门,你从来没有听说过我,好吗?
答案 1 :(得分:1)
我使用http://jericho.htmlparser.net/docs/index.html。 Google学术搜索没有API(http://code.google.com/p/google-ajax-apis/issues/detail?id=109)。当然,Google不允许这样做(阅读使用条款。禁止自动请求。)
答案 2 :(得分:0)
下面是一些示例代码,它使用开源产品TestPlan在第一页上获取标题。它是一个独立的产品,但如果你真的需要它,我可以帮助你将它集成到你的Java代码中(它用Java本身编写)。
GotoURL http://scholar.google.com/
SubmitForm with
%Params:q% automate theory
end
set %Items% as response //div[@class='gs_r']
foreach %Item% in %Items%
set %Title% as selectIn %Item% h3
Notice %Title%
end
这产生如下的输出(我的IP是德国,因此是德国的回应)。显然你可以根据自己的喜好对其进行格式化,或者将其写入文件中;这只是一个粗略的考验。
00000000-00 GOTOURL http://scholar.google.com/
00000001-00 SUBMITFORM default
00000002-00 NOTICE [ZITATION] Stochastic complexity in statistical inquiry theory
00000003-00 NOTICE AUTOMATED THEORY FORMATION IN MATHEMATICS1
00000004-00 NOTICE Constraint generation via automated theory formation
00000005-00 NOTICE [BUCH] Automated theorem proving: after 25 years
00000006-00 NOTICE [BUCH] Introduction to the Theory of Computation
00000007-00 NOTICE [ZITATION] Computer-controlled systems: theory and design
00000008-00 NOTICE [BUCH] … , randomness & incompleteness: papers on algorithmic information theory
00000009-00 NOTICE [BUCH] Automatic control systems
00000010-00 NOTICE [BUCH] VLSI physical design automation: theory and practice
00000011-00 NOTICE Singular Control Systems.