Dúvida com javascript e pesquisa automática na web

3 respostas
N

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('&#53;');document.write('&#55;');document.write('&#54;');document.write('0');document.write('&#56;');document.write('&#53;');document.write('&#x32;');document.write('2');document.write('&#52;');</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!

3 Respostas

drsmachado

Cara, aqui

<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>

não tem nada de útil.
document.write vai apenas escrever no body do html o que está entre aspas simples.

JoaoBluSCBR

Será que a Cultura não tem um ws que já traga tudo que você precisa?

Ficar garimpando texto em site é uma coisa muito estranha. kkkkk

N

Obrigado pela resposta drsmachado, agora só preciso descobrir como retornar esses valores.
JoaoBluSCBR, obrigado pela resposta, desculpe minha ignorância mas o que seria um “ws”? Eu concordo com você que garimpar o texto da página é totalmente errado, porque qualquer mudança no layout eu to fu… Será que você não conhece nenhuma outra maneira?
Obrigado.

Criado 8 de julho de 2011
Ultima resposta 8 de jul. de 2011
Respostas 3
Participantes 3