Boa tarde!
Estou mexendo com 'robôs' para capturar informações em alguns sites e o caminho mais 'fácil' e limpo que vi até agora para tratar todo o HTML da página foi através de Regex.
Um colega de trabalho montou um para o primeiro site que eu fiz e ficou muito bom, problema que mudei o site agora e estou apanhando feio.
Ex:
Em uma página HTML a informação que aparece é:
Endereço: Av. Barão do Rio Branco 2001
Bairro: Centro
Cidade: Petrópolis
<tr>
<td valign="top" nowrap="nowrap" class="info">Endereço:</td>
<td valign="top">
Av. Barão do Rio Branco
2001
</td>
</tr>
<tr>
<td valign="top" nowrap="nowrap" class="info">Bairro:</td>
<td valign="top">
Centro
</td>
</tr>
<tr>
<td valign="top" nowrap="nowrap" class="info">Cidade:</td>
<td valign="top">
Petrópolis
</td>
</tr>
static Pattern endereco = Pattern.compile("Endereço:[^>]*>[^>]*>([^<]*)", Pattern.MULTILINE);
static Pattern bairro = Pattern.compile("Bairro:[^>]*>[^>]*>([^<]*)",Pattern.MULTILINE);
static Pattern cidade = Pattern.compile("Cidade:[^>]*>[^>]*>([^<]*)",Pattern.MULTILINE);
m = endereco.matcher(ScriptBuffer);
if (m.find()) {
System.out.println("Cidade: " + m.group(1));
}
m = bairro.matcher(ScriptBuffer);
if (m.find()) {
System.out.println("Cidade: " + m.group(1));
}
m = cidade.matcher(ScriptBuffer);
if (m.find()) {
System.out.println("Cidade: " + m.group(1));
}
e a informação vem redondinha. Apenas o texto que preciso.
1ª pergunta, o que este código: " ("Bairro:[^>]*>[^>]*>([^<]*)" faz? O que estou dizendo que eu quero nisso?
dei uma lida aqui em toda documentação da classe regex, e está tudo bem confuso na minha mente ainda, ainda + pq o colega concatenou várias coisas nessa expressão ai.
Acontece que nesta nova página, o HTML vem com fechamento de aspas + cedo:
<td id="" width="150" valign="">
<div class="labelClass" style="text-align:right;font-weight:bold;;">Classe:</div>
</td>
<td valign="">
<table cellpadding="0" cellspacing="0" border="0" width="">
<tr>
<td>
<span id="">
<span id="">Procedimento Ordinário</span>
e não consigo pegar a informação, podem me ajudar nisso e na minha pergunta?
obrigado