Pergunta

Estou tendo um pequeno problema em Java. Como fazer isso:. Quero pesquisar em um arquivo HTML para as tags href e src, e então eu quero para obter o URL associado com que as tags

O que é a melhor maneira de fazê-lo?

Obrigado pela ajuda. Com os melhores cumprimentos.

Foi útil?

Solução

Este é o código que usei para fazer exatamente o que você gostaria de fazer, mas primeiro deixe-me dar-lhe algumas dicas.

Se você estiver em um ambiente Java Swing, certifique-se de usar os métodos nos pacotes javax.swing.text.html e javax.swing.text.html.parser. Infelizmente, eles estão principalmente destinado ao uso em um JEditorPane, mas eu ainda recomendo fortemente que você dê uma olhada nestes.

Há uma classe na API Java 6 chamado HTML.Tag que identifica o início e fim etiquetas HTML, que você pode usar para determinar onde as ligações são de que você gostaria que o seu programa a seguir. http://java.sun.com/javase/6/docs/api/javax/swing/text/html/HTML.Tag.html

Quando eu escrevi um programa muito semelhante a este, eu usei 3 métodos principais:

public void handleStartTag(HTML.Tag t, MUtableAttributeSet atts, int pos)
public void handleEndTag(HTML.Tag t, int pos)
public void handleText(char[] text, int pos)

Se precisar de mais ajuda sobre como escrever esses métodos, você pode me mensagem, mas, basicamente, você está procurando uma tag inicial e uma tag final e depois de que você vai ter identificado a url e, em seguida, você pode avançar para o próximo passo, que está seguindo a url.

Para seguir a url, eu aconselhá-lo a usar o objeto JEditorPane. Os define a interface javax.swing.event.HyperlinkListener apenas um método, hyperlinkUpdate (HyperlinkEvent e), que você pode passar a url para dentro e, em seguida, chamar .setPage (evt.getURL ()) em seu objeto JEditorPane. Este, então, atualizar o painel com a nova página e permitir que você comece o processo novamente.

Msg me se você tiver quaisquer probs e por favor, votar esta resposta!

Outras dicas

Você quer fazer isso como uma tarefa a edição de uma só vez, ou você precisa de um (código ou seja) implementação sistemática? No segundo caso, encontrar uma implementação de analisador Java HTML e percorrer a árvore DOM.

http://java-source.net/open-source/html-parsers

Dê uma olhada nesta pergunta:

A resposta que eu usei foi JTidy

Você pode usar Rhino , em seguida, carregar o arquivo html. Uma vez que ele é carregado, você pode utilizar getElementBy para ir a qualquer nó ou para obter valor.

Se o arquivo é um documento xhtml , é um documento XML padrão e a maneira bast para analisá-lo é usando jdom . JDom é muito poderoso e fácil de usar e entender.

Se você tiver um documento HTML, você pode tentar HTMLParser , em particoular a classe linktag .

eu teria uma olhada TagSoup , que irá construir um DOM árvore de qualquer documento HTML, mesmo os mais não conformes.

Em seguida, use XPath e iterar sobre os NodeList retornado por:

// um

e

// img

Eu usei o Neko HTML Parser com sucesso para este tipo de coisa (screen scraping).

import org.cyberneko.html.parsers.DOMParser;
import org.w3c.dom.Node;

public class TestParser {

     public static void main(String[] argv) throws Exception {
          DOMParser parser = new DOMParser();
          for (int i = 0; i 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top