Eu tenho que fazer um sistema que busque todos os dados de um livro a partir do título. Para fazer essa busca eu estou utilizando o site da livraria cultura. Eu faço a busca no site da livraria, baixo o código da página e busco por expressões regulares para encontrar o título do livro e o link que leva a uma página com mais detalhes. Meu problema é que eu preciso buscar o número do ISBN mas é usado javascript para mostrar ele e eu não entendo nada de javascript. Peço a ajuda de meus companheiros do guj para me darem alguma dica de como faço pra pegar esse valor do ISBN. Obs: Estou usando o jerichoHTML parser
O javascript que é usado na página da livraria cultura:
<script type="text/javascript">
document.write('');document.write('8');document.write('5');document.write('7');document.write('6');document.write('0');document.write('8');document.write('5');document.write('2');document.write('2');document.write('4');</script>
Meu código para buscar os dados:
@SuppressWarnings("finally")
public List<Result> autocomplete(Object suggest){
List<Result> results = new ArrayList<Result>();
pesquisa = String.valueOf(suggest);
try{
this.formataPesquisa();
URL url = new URL("http://www.livrariacultura.com.br/scripts/busca/busca.asp?palavra="+pesquisa+"&tipo_pesq=1&tipo_pesq_new_value=false");
Source source = new Source(url);
Pattern pattern = Pattern.compile("<h4><a href=\"(.*)\">(.*)</a></h4>");
Matcher matcher = pattern.matcher(source.toString());
while(matcher.find()){
System.out.println(matcher.group(2));
Result result = new Result();
result.setNome(matcher.group(2));
result.setLink(matcher.group(1));
results.add(result);
}
}catch(Exception e){
e.printStackTrace();
}finally{
return results;
}
}
Outro problema, eu to usando richfaces e uso essa lista em uma suggestionBox, só que ela demora relativamente muito pra mostrar, aqui ele chega a demorar uns 10 segundos pra mostrar a lista, é normal isso? Aqui tem o código:
<h:inputText value="#{livroMB.livro.titulo}" id="text" />
<rich:suggestionbox id="suggestionBoxId" for="text"
suggestionAction="#{LivroMB.autocomplete}" var="result"
nothingLabel="Nenhum livro encontrado"
usingSuggestObjects="true">
<h:column>
<h:outputText value="#{result.nome}" />
</h:column>
</rich:suggestionbox>
Qualquer sugestão sobre meu código será bem vinda!