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
o html disso é:
[code]
<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>
[/code]
então, para buscar estas três informações, o colega usou o seguinte código: (scriptBuffer contem todo o HTML da página)
[code]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));
}
[/code]
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:
[code]
[/code] e não consigo pegar a informação, podem me ajudar nisso e na minha pergunta? obrigado |