如何在Java中使用webscrape scholar.google.com?

时间:2010-01-13 12:42:03

标签: java web-scraping

我想编写一个Java函数grabTopResults(String f),以便grabTopResults("automata theory")在scholar.google.com上为“自动机理论”返回前100篇引用论文的列表。

有没有人建议图书馆能让我的生活变得轻松?

谢谢!

3 个答案:

答案 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.