Como Webscrape Scholar.google.com em Java?
-
20-09-2019 - |
Pergunta
Eu quero escrever uma func grabTopResults(String f)
de tal modo que grabTopResults("automata theory")
Retorna -me uma lista dos 100 principais artigos citados no Scholar.google.com para "Automata Theory".
Alguém tem sugestões para quais bibliotecas facilitarão minha vida?
Obrigado!
Solução
Como tenho certeza de
A primeira coisa que você precisa fazer é descobrir qual solicitação HTTP (ou solicitações) você precisa emitir para obter a página com os dados necessários. Depois de descobrir isso, use HttpClient Para emitir a mesma solicitação do código Java. O link anterior mostra o código de exemplo que explica como fazer isso.
Depois de baixar o conteúdo da página relevante, você precisará usar um analisador HTML para extrair os dados em que você está interessado. Jericho Parser Sugerido por Peperg é uma boa escolha.
Se a polícia do Google bate, você nunca ouviu falar de mim, ok?
Outras dicas
eu uso http://jericho.htmlparser.net/docs/index.html . Google Scholar não tem API ( http://code.google.com/p/google-ajax-apis/issues/detail?id=109 ). Obviamente, não é permitido pelo Google (leia os termos de uso. São proibidos de solicitação automática).
Abaixo está um código de exemplo que recebe os títulos na primeira página usando o produto de código aberto Plano de teste. É um produto independente, mas se você realmente precisar, eu poderia ajudá -lo a integrá -lo ao seu código Java (ele está escrito no próprio 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
Isso produz saída como o abaixo (meu IP é a Alemanha, portanto, uma resposta alemã). Obviamente, você pode formatá -lo como quiser ou escrevê -lo em um arquivo; Este é apenas um teste aproximado.
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.