2010-01-13 3 views
2

Я хочу написать Java func grabTopResults(String f), так что grabTopResults("automata theory") возвращает мне список 100 лучших цитируемых статей на сайте scholar.google.com для «теории автоматов».Как webscrape scholar.google.com в Java?

Есть ли у кого-нибудь предложения относительно того, какие библиотеки облегчат жизнь?

Спасибо!

+0

Я думаю, что Google запрещает такие вещи. Проверьте их условия использования – Bozho

+0

Пока поиск инициируется человеком, а не сценарий агрегации, я не вижу, что он нарушает TOS Google. В нем говорится, что вы должны использовать предоставленные вами интерфейсы Google (их ответ на http) и что вы не можете его автоматизировать, что, если пользователь инициирует его, это в основном просто другая форма веб-браузера. – Yishai

ответ

4

Я уверен, что Google может позволить себе пропускную способность, я буду игнорировать вопрос о том, является ли это аморально/незаконное/запрещено T от Google & C

Первое, что вам нужно сделать, это выяснить, что HTTP запрос (или запросы), который вам необходимо предоставить, чтобы получить страницу с необходимыми данными. После того, как вы это поняли, используйте HttpClient, чтобы выдать тот же запрос из Java-кода. В предыдущей ссылке показан пример кода, в котором объясняется, как это сделать.

После того, как вы загрузили содержимое соответствующей страницы, вам нужно будет использовать анализатор HTML для извлечения интересующих вас данных. Jericho parser, предлагаемый peperg, является хорошим выбором.

Если полиция Google стучит, вы никогда не слышали обо мне, хорошо?

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.