Loading ...
Sorry, an error occurred while loading the content.

Lib para percorrer html

Expand Messages
  • Wagner Montalvão Camarão
    Fala pessoal, Estou criando um mecanismo que vai percorrer um código html e localizar todos os links (atributos href) das tags que os possuem ( e ).
    Message 1 of 16 , Feb 17, 2010
    • 0 Attachment
      Fala pessoal,

      Estou criando um mecanismo que vai percorrer um código html e localizar todos os links (atributos href) das tags que os possuem (<a> e <area>).

      O html já virá pronto como um stringão de outro lugar. Cada href encontrado será substituído por um novo link gerado pelo sistema para interceptar os clicks nesses links originais do html. O objetivo é para gerar relatórios de quais foram os links mais clicados em cada html.

      Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles a navegação é tranquila, porém tem um problema: se não for um xhtml w3c válido, dá exception no parse do xhtml para o dom (e provavelmente o cliente mandará uns códigos inválidos gerados por designer tools).

      Depois experimentei sofrer um pouco fazendo essa busca manualmente com Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro de reinvenção de roda ficou forte...

      Enfim, gostaria de saber se alguém conhece e pode me indicar algum utilitário para isso. Algo como o jQuery, porém no lado servidor...

      Abraços e Obrigado,

      Wagner Montalvão Camarão
    • José Augusto Martins Nieviadonski
      Wagner. Somente para ter mais conhecimento de seu problema. Voce só quer processar os href do HTML?????? O resto pode deixar como está? Porque se você só
      Message 2 of 16 , Feb 17, 2010
      • 0 Attachment
        Wagner.

        Somente para ter mais conhecimento de seu problema.

        Voce só quer processar os href do HTML??????

        O resto pode deixar como está?

        Porque se você só quer obter o conteúdo do href da para usar o regexp do Java.

        Explica melhor, se possível com alguns exemplos básicos que talvez a
        gente possa te ajudar.

        --

        P.S.
        No grupo scjp_brasil você recebe uma questão de certificação java por dia.
        Para entrar é só enviar email para scjp_brasil-subscribe@...
        Venha participar desse desafio e prove que você é um programador Java

        José Augusto Martins Nieviadonski
        Sun Certified Associate for Java Platform, Standard Edition
        Especialista Técnico II - FX and Trade Systems - HSBC Bank Brasil S.A.
        Professor - Pós-graduação Java - Faculdades SPEI
        jose.augusto.martins@...
        jaugusto@...



        Citando Wagner Montalvão Camarão <wagner.montalvao@...>:

        > Fala pessoal,
        >
        > Estou criando um mecanismo que vai percorrer um código html e localizar
        > todos os links (atributos href) das tags que os possuem (<a> e <area>).
        >
        > O html já virá pronto como um stringão de outro lugar. Cada href encontrado
        > será substituído por um novo link gerado pelo sistema para interceptar os
        > clicks nesses links originais do html. O objetivo é para gerar relatórios de
        > quais foram os links mais clicados em cada html.
        >
        > Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles a
        > navegação é tranquila, porém tem um problema: se não for um xhtml w3c
        > válido, dá exception no parse do xhtml para o dom (e provavelmente o cliente
        > mandará uns códigos inválidos gerados por designer tools).
        >
        > Depois experimentei sofrer um pouco fazendo essa busca manualmente com
        > Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber
        > que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro de
        > reinvenção de roda ficou forte...
        >
        > Enfim, gostaria de saber se alguém conhece e pode me indicar algum
        > utilitário para isso. Algo como o jQuery, porém no lado servidor...
        >
        > Abraços e Obrigado,
        >
        > Wagner Montalvão Camarão
        >
      • Andre Fonseca
        Bem, Você pode tentar ler como um xml mesmo e daí buscar os dados navegando pela árvore DOM do seu html. Em último caso pode tentar fazer por regular
        Message 3 of 16 , Feb 17, 2010
        • 0 Attachment
          Bem,

          Você pode tentar ler como um xml mesmo e daí buscar os dados navegando pela árvore DOM do seu html. Em último caso pode tentar fazer por regular expression.

          Creio que se fizer uma busca google encontrará algo.

          -- 
          Atenciosamente
          Andre Fonseca
          http://www.andrefonseca.net
        • Rubens Gama
          Use HTMLPARSER e Expressão Regular. ... Use HTMLPARSER e Expressão Regular. Em 17 de fevereiro de 2010 15:56, Andre Fonseca
          Message 4 of 16 , Feb 17, 2010
          • 0 Attachment
            Use HTMLPARSER e Expressão Regular.


            Em 17 de fevereiro de 2010 15:56, Andre Fonseca <aoqfonseca@...> escreveu:
             

            Bem,


            Você pode tentar ler como um xml mesmo e daí buscar os dados navegando pela árvore DOM do seu html. Em último caso pode tentar fazer por regular expression.

            Creio que se fizer uma busca google encontrará algo.

            -- 
            Atenciosamente
            Andre Fonseca
            http://www.andrefonseca.net


          • Wagner Montalvão Camarão
            Pois é Andre, DOM e String/Regex como já falei não foram boas opções. José, basicamente quero percorrer o html e alterar os conteúdos dos atributos
            Message 5 of 16 , Feb 17, 2010
            • 0 Attachment
              Pois é Andre, DOM e String/Regex como já falei não foram boas opções.

              José, basicamente quero percorrer o html e alterar os conteúdos dos atributos href.

              Tô dando uma olhada nesse htmlparser e parece ser exatamente o que eu precisava... valeu Rubens!

              Abs

              Wagner Montalvão Camarão


              2010/2/17 José Augusto Martins Nieviadonski <jaugusto@...>
               

              Wagner.

              Somente para ter mais conhecimento de seu problema.

              Voce só quer processar os href do HTML??????

              O resto pode deixar como está?

              Porque se você só quer obter o conteúdo do href da para usar o regexp do Java.

              Explica melhor, se possível com alguns exemplos básicos que talvez a
              gente possa te ajudar.

              --

              P.S.
              No grupo scjp_brasil você recebe uma questão de certificação java por dia.
              Para entrar é só enviar email para scjp_brasil-subscribe@...
              Venha participar desse desafio e prove que você é um programador Java

              José Augusto Martins Nieviadonski
              Sun Certified Associate for Java Platform, Standard Edition
              Especialista Técnico II - FX and Trade Systems - HSBC Bank Brasil S.A.
              Professor - Pós-graduação Java - Faculdades SPEI
              jose.augusto.martins@...
              jaugusto@...

              Citando Wagner Montalvão Camarão <wagner.montalvao@...>:



              > Fala pessoal,
              >
              > Estou criando um mecanismo que vai percorrer um código html e localizar
              > todos os links (atributos href) das tags que os possuem (<a> e <area>).
              >
              > O html já virá pronto como um stringão de outro lugar. Cada href encontrado
              > será substituído por um novo link gerado pelo sistema para interceptar os
              > clicks nesses links originais do html. O objetivo é para gerar relatórios de
              > quais foram os links mais clicados em cada html.
              >
              > Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles a
              > navegação é tranquila, porém tem um problema: se não for um xhtml w3c
              > válido, dá exception no parse do xhtml para o dom (e provavelmente o cliente
              > mandará uns códigos inválidos gerados por designer tools).
              >
              > Depois experimentei sofrer um pouco fazendo essa busca manualmente com
              > Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber
              > que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro de
              > reinvenção de roda ficou forte...
              >
              > Enfim, gostaria de saber se alguém conhece e pode me indicar algum
              > utilitário para isso. Algo como o jQuery, porém no lado servidor...
              >
              > Abraços e Obrigado,
              >
              > Wagner Montalvão Camarão
              >


            • Victor Hogemann
              Rapaz, O que você quer é um re*LAX*ed *PARSER*, isto é, um parser que pega leve na hora de fazer a validação da estrutura do documento, e que se possível
              Message 6 of 16 , Feb 17, 2010
              • 0 Attachment
                Rapaz,

                O que você quer é um reLAXed PARSER, isto é, um parser que pega leve na hora de fazer a validação da estrutura do documento, e que se possível até tenta corrigir algum erro.

                Eu já precisei fazer a mesma coisa que você, só que em python. Consegui com a ajuda do nosso amigo Google, que numa rápida busca por: java html lax parser, me retornou o seguinte:



                [ ]s

                2010/2/17 Wagner Montalvão Camarão <wagner.montalvao@...>
                 

                Fala pessoal,

                Estou criando um mecanismo que vai percorrer um código html e localizar todos os links (atributos href) das tags que os possuem (<a> e <area>).

                O html já virá pronto como um stringão de outro lugar. Cada href encontrado será substituído por um novo link gerado pelo sistema para interceptar os clicks nesses links originais do html. O objetivo é para gerar relatórios de quais foram os links mais clicados em cada html.

                Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles a navegação é tranquila, porém tem um problema: se não for um xhtml w3c válido, dá exception no parse do xhtml para o dom (e provavelmente o cliente mandará uns códigos inválidos gerados por designer tools).

                Depois experimentei sofrer um pouco fazendo essa busca manualmente com Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro de reinvenção de roda ficou forte...

                Enfim, gostaria de saber se alguém conhece e pode me indicar algum utilitário para isso. Algo como o jQuery, porém no lado servidor...

                Abraços e Obrigado,

                Wagner Montalvão Camarão




                --
                Victor Guilherme Hogemann
                http://victor.hogemann.eti.br
              • Wagner Montalvão Camarão
                Legal cara nao conhecia esse termo. Vou dar uma refinada na pespuisa e agora chego la. Quaisquer sugestoes alem das que ja deram continuam sendo bem vindas.
                Message 7 of 16 , Feb 17, 2010
                • 0 Attachment
                  Legal cara nao conhecia esse termo. Vou dar uma refinada na pespuisa e
                  agora chego la. Quaisquer sugestoes alem das que ja deram continuam
                  sendo bem vindas. Quando eu resolver posto pra dizer como ficou. Abs e
                  obg

                  On 2/17/10, Victor Hogemann <victor.hogemann@...> wrote:
                  > Rapaz,
                  >
                  > O que você quer é um re*LAX*ed *PARSER*, isto é, um parser que pega leve na
                  > hora de fazer a validação da estrutura do documento, e que se possível até
                  > tenta corrigir algum erro.
                  >
                  > Eu já precisei fazer a mesma coisa que você, só que em python. Consegui com
                  > a ajuda do nosso amigo Google, que numa rápida busca por: *java html lax
                  > parser*, me retornou o seguinte:
                  >
                  > http://xml.coverpages.org/hexAnn980512.html
                  >
                  > http://htmlparser.sourceforge.net/
                  >
                  > [ ]s
                  >
                  > 2010/2/17 Wagner Montalvão Camarão <wagner.montalvao@...>
                  >
                  >>
                  >>
                  >> Fala pessoal,
                  >>
                  >> Estou criando um mecanismo que vai percorrer um código html e localizar
                  >> todos os links (atributos href) das tags que os possuem (<a> e <area>).
                  >>
                  >> O html já virá pronto como um stringão de outro lugar. Cada href
                  >> encontrado
                  >> será substituído por um novo link gerado pelo sistema para interceptar os
                  >> clicks nesses links originais do html. O objetivo é para gerar relatórios
                  >> de
                  >> quais foram os links mais clicados em cada html.
                  >>
                  >> Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles
                  >> a
                  >> navegação é tranquila, porém tem um problema: se não for um xhtml w3c
                  >> válido, dá exception no parse do xhtml para o dom (e provavelmente o
                  >> cliente
                  >> mandará uns códigos inválidos gerados por designer tools).
                  >>
                  >> Depois experimentei sofrer um pouco fazendo essa busca manualmente com
                  >> Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber
                  >> que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro
                  >> de
                  >> reinvenção de roda ficou forte...
                  >>
                  >> Enfim, gostaria de saber se alguém conhece e pode me indicar algum
                  >> utilitário para isso. Algo como o jQuery, porém no lado servidor...
                  >>
                  >> Abraços e Obrigado,
                  >>
                  >> Wagner Montalvão Camarão
                  >>
                  >>
                  >
                  >
                  >
                  > --
                  > Victor Guilherme Hogemann
                  > http://victor.hogemann.eti.br
                  >

                  --
                  Sent from my mobile device

                  Wagner Montalvão Camarão
                • Victor Hogemann
                  Então, Eu sugiro que você NÃO use regex... expressões regulares não são suficientes para fazer parsing completo de HTML, e você vai acabar com uma
                  Message 8 of 16 , Feb 17, 2010
                  • 0 Attachment
                    Então,

                    Eu sugiro que você NÃO use regex... expressões regulares não são suficientes para fazer parsing completo de HTML, e você vai acabar com uma solução extremamente difícil de manter nas mãos.

                    Como exemplo do que NÃO fazer mostro esse Yahoo!Pipe que eu mesmo criei pra fazer screen-scrapping da página de busca do submarino.com:


                    Se por alguma razão os caras decidirem mudar qualquer coisa nessa página, tudo que eu fiz vai pro vinagre... e vou ter que fazer todos os regex novamente, na mão... Claro, usando XPath provavelmente eu cairia no mesmo problema, mas refazer queries XPath é bem mais tranquilo que ficar lutando com regex.

                    [ ]s

                    2010/2/17 Wagner Montalvão Camarão <wagner.montalvao@...>
                     

                    Legal cara nao conhecia esse termo. Vou dar uma refinada na pespuisa e
                    agora chego la. Quaisquer sugestoes alem das que ja deram continuam
                    sendo bem vindas. Quando eu resolver posto pra dizer como ficou. Abs e
                    obg



                    On 2/17/10, Victor Hogemann <victor.hogemann@...> wrote:
                    > Rapaz,
                    >
                    > O que você quer é um re*LAX*ed *PARSER*, isto é, um parser que pega leve na

                    > hora de fazer a validação da estrutura do documento, e que se possível até
                    > tenta corrigir algum erro.
                    >
                    > Eu já precisei fazer a mesma coisa que você, só que em python. Consegui com
                    > a ajuda do nosso amigo Google, que numa rápida busca por: *java html lax
                    > parser*, me retornou o seguinte:
                    >
                    > http://xml.coverpages.org/hexAnn980512.html
                    >
                    > http://htmlparser.sourceforge.net/
                    >
                    > [ ]s
                    >
                    > 2010/2/17 Wagner Montalvão Camarão <wagner.montalvao@...>
                    >
                    >>
                    >>
                    >> Fala pessoal,
                    >>
                    >> Estou criando um mecanismo que vai percorrer um código html e localizar
                    >> todos os links (atributos href) das tags que os possuem (<a> e <area>).
                    >>
                    >> O html já virá pronto como um stringão de outro lugar. Cada href
                    >> encontrado
                    >> será substituído por um novo link gerado pelo sistema para interceptar os
                    >> clicks nesses links originais do html. O objetivo é para gerar relatórios
                    >> de
                    >> quais foram os links mais clicados em cada html.
                    >>
                    >> Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles
                    >> a
                    >> navegação é tranquila, porém tem um problema: se não for um xhtml w3c
                    >> válido, dá exception no parse do xhtml para o dom (e provavelmente o
                    >> cliente
                    >> mandará uns códigos inválidos gerados por designer tools).
                    >>
                    >> Depois experimentei sofrer um pouco fazendo essa busca manualmente com
                    >> Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber
                    >> que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro
                    >> de
                    >> reinvenção de roda ficou forte...
                    >>
                    >> Enfim, gostaria de saber se alguém conhece e pode me indicar algum
                    >> utilitário para isso. Algo como o jQuery, porém no lado servidor...
                    >>
                    >> Abraços e Obrigado,
                    >>
                    >> Wagner Montalvão Camarão
                    >>
                    >>
                    >
                    >
                    >
                    > --

                    > Victor Guilherme Hogemann
                    > http://victor.hogemann.eti.br
                    >

                    --
                    Sent from my mobile device

                    Wagner Montalvão Camarão




                    --
                    Victor Guilherme Hogemann
                    http://victor.hogemann.eti.br
                  • Marcius Armada
                    Também estou dando uma pesquisada neste assunto. Além do http://htmlparser.sourceforge.net/ já citado, encontrei mais um para comparar:
                    Message 9 of 16 , Feb 17, 2010
                    • 0 Attachment
                      Também estou dando uma pesquisada neste assunto.

                      Além do http://htmlparser.sourceforge.net/ já citado, encontrei mais um para comparar: http://sourceforge.net/projects/jerichohtml/

                      Tem também o http://htmlunit.sourceforge.net/ com http://code.google.com/p/hue/ que deve dar um "q" de "jQuery no lado servidor", mas é mais para criar testes e não para o que você deseja fazer...

                         []'s.,
                         Marcius Armada


                      2010/2/17 Victor Hogemann <victor.hogemann@...>
                       

                      Então,


                      Eu sugiro que você NÃO use regex... expressões regulares não são suficientes para fazer parsing completo de HTML, e você vai acabar com uma solução extremamente difícil de manter nas mãos.

                      Como exemplo do que NÃO fazer mostro esse Yahoo!Pipe que eu mesmo criei pra fazer screen-scrapping da página de busca do submarino.com:


                      Se por alguma razão os caras decidirem mudar qualquer coisa nessa página, tudo que eu fiz vai pro vinagre... e vou ter que fazer todos os regex novamente, na mão... Claro, usando XPath provavelmente eu cairia no mesmo problema, mas refazer queries XPath é bem mais tranquilo que ficar lutando com regex.

                      [ ]s

                      2010/2/17 Wagner Montalvão Camarão <wagner.montalvao@...>
                       

                      Legal cara nao conhecia esse termo. Vou dar uma refinada na pespuisa e
                      agora chego la. Quaisquer sugestoes alem das que ja deram continuam
                      sendo bem vindas. Quando eu resolver posto pra dizer como ficou. Abs e
                      obg



                      On 2/17/10, Victor Hogemann <victor.hogemann@...> wrote:
                      > Rapaz,
                      >
                      > O que você quer é um re*LAX*ed *PARSER*, isto é, um parser que pega leve na

                      > hora de fazer a validação da estrutura do documento, e que se possível até
                      > tenta corrigir algum erro.
                      >
                      > Eu já precisei fazer a mesma coisa que você, só que em python. Consegui com
                      > a ajuda do nosso amigo Google, que numa rápida busca por: *java html lax
                      > parser*, me retornou o seguinte:
                      >
                      > http://xml.coverpages.org/hexAnn980512.html
                      >
                      > http://htmlparser.sourceforge.net/
                      >
                      > [ ]s
                      >
                      > 2010/2/17 Wagner Montalvão Camarão <wagner.montalvao@...>
                      >
                      >>
                      >>
                      >> Fala pessoal,
                      >>
                      >> Estou criando um mecanismo que vai percorrer um código html e localizar
                      >> todos os links (atributos href) das tags que os possuem (<a> e <area>).
                      >>
                      >> O html já virá pronto como um stringão de outro lugar. Cada href
                      >> encontrado
                      >> será substituído por um novo link gerado pelo sistema para interceptar os
                      >> clicks nesses links originais do html. O objetivo é para gerar relatórios
                      >> de
                      >> quais foram os links mais clicados em cada html.
                      >>
                      >> Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles
                      >> a
                      >> navegação é tranquila, porém tem um problema: se não for um xhtml w3c
                      >> válido, dá exception no parse do xhtml para o dom (e provavelmente o
                      >> cliente
                      >> mandará uns códigos inválidos gerados por designer tools).
                      >>
                      >> Depois experimentei sofrer um pouco fazendo essa busca manualmente com
                      >> Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber
                      >> que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro
                      >> de
                      >> reinvenção de roda ficou forte...
                      >>
                      >> Enfim, gostaria de saber se alguém conhece e pode me indicar algum
                      >> utilitário para isso. Algo como o jQuery, porém no lado servidor...
                      >>
                      >> Abraços e Obrigado,
                      >>
                      >> Wagner Montalvão Camarão
                      >>
                      >>
                      >
                      >
                      >
                      > --

                      > Victor Guilherme Hogemann
                      > http://victor.hogemann.eti.br
                      >

                      --
                      Sent from my mobile device

                      Wagner Montalvão Camarão




                      --
                      Victor Guilherme Hogemann
                      http://victor.hogemann.eti.br

                    • Valter Lobo - Imaginary Software System
                      Um serie de Html parsers : http://java-source.net/open-source/html-parsers Eu ja utilizei este : http://jtidy.sourceforge.net/ Em 17 de fevereiro de 2010
                      Message 10 of 16 , Feb 18, 2010
                      • 0 Attachment
                        Um serie de Html parsers :
                        http://java-source.net/open-source/html-parsers

                        Eu ja utilizei este :
                        http://jtidy.sourceforge.net/




                        Em 17 de fevereiro de 2010 15:36, Wagner Montalvão Camarão <wagner.montalvao@...> escreveu:
                         

                        Fala pessoal,

                        Estou criando um mecanismo que vai percorrer um código html e localizar todos os links (atributos href) das tags que os possuem (<a> e <area>).

                        O html já virá pronto como um stringão de outro lugar. Cada href encontrado será substituído por um novo link gerado pelo sistema para interceptar os clicks nesses links originais do html. O objetivo é para gerar relatórios de quais foram os links mais clicados em cada html.

                        Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles a navegação é tranquila, porém tem um problema: se não for um xhtml w3c válido, dá exception no parse do xhtml para o dom (e provavelmente o cliente mandará uns códigos inválidos gerados por designer tools).

                        Depois experimentei sofrer um pouco fazendo essa busca manualmente com Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro de reinvenção de roda ficou forte...

                        Enfim, gostaria de saber se alguém conhece e pode me indicar algum utilitário para isso. Algo como o jQuery, porém no lado servidor...

                        Abraços e Obrigado,

                        Wagner Montalvão Camarão


                      • Wagner Montalvão Camarão
                        Victor, Marcius e Valter, obrigado² por todos os links e dicas! Vão ajudar muito aqui. Abraços Wagner Montalvão Camarão 2010/2/18 Valter Lobo - Imaginary
                        Message 11 of 16 , Feb 18, 2010
                        • 0 Attachment
                          Victor, Marcius e Valter, obrigado² por todos os links e dicas! Vão ajudar muito aqui.

                          Abraços

                          Wagner Montalvão Camarão


                          2010/2/18 Valter Lobo - Imaginary Software System <valter.imaginary@...>
                           


                          Um serie de Html parsers :
                          http://java-source.net/open-source/html-parsers

                          Eu ja utilizei este :
                          http://jtidy.sourceforge.net/




                          Em 17 de fevereiro de 2010 15:36, Wagner Montalvão Camarão <wagner.montalvao@...> escreveu:

                           

                          Fala pessoal,

                          Estou criando um mecanismo que vai percorrer um código html e localizar todos os links (atributos href) das tags que os possuem (<a> e <area>).

                          O html já virá pronto como um stringão de outro lugar. Cada href encontrado será substituído por um novo link gerado pelo sistema para interceptar os clicks nesses links originais do html. O objetivo é para gerar relatórios de quais foram os links mais clicados em cada html.

                          Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles a navegação é tranquila, porém tem um problema: se não for um xhtml w3c válido, dá exception no parse do xhtml para o dom (e provavelmente o cliente mandará uns códigos inválidos gerados por designer tools).

                          Depois experimentei sofrer um pouco fazendo essa busca manualmente com Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro de reinvenção de roda ficou forte...

                          Enfim, gostaria de saber se alguém conhece e pode me indicar algum utilitário para isso. Algo como o jQuery, porém no lado servidor...

                          Abraços e Obrigado,

                          Wagner Montalvão Camarão



                        • Felipe Gaúcho
                          se o html for pequeno (menos de 2 ou 3 mil linhas), compile o schema do XHTML e carregue os dados na memória.. tu ganha validação grátis.. e, na minha
                          Message 12 of 16 , Feb 18, 2010
                          • 0 Attachment
                            se o html for pequeno (menos de 2 ou 3 mil linhas), compile o schema do XHTML e carregue os dados na memória.. tu ganha validação grátis.. e, na minha opinião, tu não deve perder tempo parseando html inválido.......... (mas não sei dos teus requisitos)...

                            2010/2/18 Wagner Montalvão Camarão <wagner.montalvao@...>
                             

                            Victor, Marcius e Valter, obrigado² por todos os links e dicas! Vão ajudar muito aqui.


                            Abraços

                            Wagner Montalvão Camarão


                            2010/2/18 Valter Lobo - Imaginary Software System <valter.imaginary@...>

                             


                            Um serie de Html parsers :
                            http://java-source.net/open-source/html-parsers

                            Eu ja utilizei este :
                            http://jtidy.sourceforge.net/




                            Em 17 de fevereiro de 2010 15:36, Wagner Montalvão Camarão <wagner.montalvao@...> escreveu:

                             

                            Fala pessoal,

                            Estou criando um mecanismo que vai percorrer um código html e localizar todos os links (atributos href) das tags que os possuem (<a> e <area>).

                            O html já virá pronto como um stringão de outro lugar. Cada href encontrado será substituído por um novo link gerado pelo sistema para interceptar os clicks nesses links originais do html. O objetivo é para gerar relatórios de quais foram os links mais clicados em cada html.

                            Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles a navegação é tranquila, porém tem um problema: se não for um xhtml w3c válido, dá exception no parse do xhtml para o dom (e provavelmente o cliente mandará uns códigos inválidos gerados por designer tools).

                            Depois experimentei sofrer um pouco fazendo essa busca manualmente com Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro de reinvenção de roda ficou forte...

                            Enfim, gostaria de saber se alguém conhece e pode me indicar algum utilitário para isso. Algo como o jQuery, porém no lado servidor...

                            Abraços e Obrigado,

                            Wagner Montalvão Camarão






                            --
                            ------------------------------------------
                              Felipe Gaúcho
                              10+ Java Programmer
                              CEJUG Senior Advisor

                          • Wagner Montalvão Camarão
                            Pois é Felipe, gostaria muito eu de só parsear os xhtml válidos, porém virão inputados pelos usuários htmls 4 inválidos e poluídos por ferramentas
                            Message 13 of 16 , Feb 18, 2010
                            • 0 Attachment
                              Pois é Felipe, gostaria muito eu de só parsear os xhtml válidos, porém virão inputados pelos usuários htmls 4 inválidos e poluídos por ferramentas visuais dessas que abrem e não fecham tags. Mas valeu de qualquer forma.

                              Abs

                              Wagner Montalvão Camarão


                              2010/2/18 Felipe Gaúcho <fgaucho@...>
                               

                              se o html for pequeno (menos de 2 ou 3 mil linhas), compile o schema do XHTML e carregue os dados na memória.. tu ganha validação grátis.. e, na minha opinião, tu não deve perder tempo parseando html inválido.......... (mas não sei dos teus requisitos)...

                              2010/2/18 Wagner Montalvão Camarão <wagner.montalvao@...>

                               

                              Victor, Marcius e Valter, obrigado² por todos os links e dicas! Vão ajudar muito aqui.


                              Abraços

                              Wagner Montalvão Camarão


                              2010/2/18 Valter Lobo - Imaginary Software System <valter.imaginary@...>

                               


                              Um serie de Html parsers :
                              http://java-source.net/open-source/html-parsers

                              Eu ja utilizei este :
                              http://jtidy.sourceforge.net/




                              Em 17 de fevereiro de 2010 15:36, Wagner Montalvão Camarão <wagner.montalvao@...> escreveu:

                               

                              Fala pessoal,

                              Estou criando um mecanismo que vai percorrer um código html e localizar todos os links (atributos href) das tags que os possuem (<a> e <area>).

                              O html já virá pronto como um stringão de outro lugar. Cada href encontrado será substituído por um novo link gerado pelo sistema para interceptar os clicks nesses links originais do html. O objetivo é para gerar relatórios de quais foram os links mais clicados em cada html.

                              Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles a navegação é tranquila, porém tem um problema: se não for um xhtml w3c válido, dá exception no parse do xhtml para o dom (e provavelmente o cliente mandará uns códigos inválidos gerados por designer tools).

                              Depois experimentei sofrer um pouco fazendo essa busca manualmente com Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro de reinvenção de roda ficou forte...

                              Enfim, gostaria de saber se alguém conhece e pode me indicar algum utilitário para isso. Algo como o jQuery, porém no lado servidor...

                              Abraços e Obrigado,

                              Wagner Montalvão Camarão






                              --
                              ------------------------------------------
                                Felipe Gaúcho
                                10+ Java Programmer
                                CEJUG Senior Advisor


                            • Carlos Angelim
                              Opa, Correndo um pouco contra a maré: se é apenas atrás de href que vc está, não vejo mal em usar regex. Há três cenários possíveis: hrefs sem aspas,
                              Message 14 of 16 , Feb 18, 2010
                              • 0 Attachment
                                Opa,

                                Correndo um pouco contra a maré: se é apenas atrás de href que vc está, não vejo mal em usar regex.
                                Há três cenários possíveis: hrefs sem aspas, hrefs com aspas simples e hrefs com aspas duplas - hrefs iniciados com um tipo de aspas e terminados com outro ficam à sua escolha :D

                                Num primeiro momento eu geraria os três regex (usaria espaço ou '>' para determinar o término de um href sem aspas) num array e passaria o documento por cada um deles, armazenando o resultado num Set. Embora regex costume ter custo alto, a simplicidade destes três casos deve permitir um parsing satisfatoriamente rápido. E uma vez criados e validados, será possível otimizá-los e/ou mesclá-los.

                                Simplesmente não me preocuparia o fato de estarem dentro de algum elemento html; aliás, para quê se preocupar com o fato da string ser um documento html?

                                []s
                                Carlos

                                2010/2/18 Wagner Montalvão Camarão <wagner.montalvao@...>
                                 

                                Pois é Felipe, gostaria muito eu de só parsear os xhtml válidos, porém virão inputados pelos usuários htmls 4 inválidos e poluídos por ferramentas visuais dessas que abrem e não fecham tags. Mas valeu de qualquer forma.


                                Abs

                                Wagner Montalvão Camarão


                                2010/2/18 Felipe Gaúcho <fgaucho@...>

                                 

                                se o html for pequeno (menos de 2 ou 3 mil linhas), compile o schema do XHTML e carregue os dados na memória.. tu ganha validação grátis.. e, na minha opinião, tu não deve perder tempo parseando html inválido.......... (mas não sei dos teus requisitos)...

                                2010/2/18 Wagner Montalvão Camarão <wagner.montalvao@...>

                                 

                                Victor, Marcius e Valter, obrigado² por todos os links e dicas! Vão ajudar muito aqui.


                                Abraços

                                Wagner Montalvão Camarão


                                2010/2/18 Valter Lobo - Imaginary Software System <valter.imaginary@...>

                                 


                                Um serie de Html parsers :
                                http://java-source.net/open-source/html-parsers

                                Eu ja utilizei este :
                                http://jtidy.sourceforge.net/




                                Em 17 de fevereiro de 2010 15:36, Wagner Montalvão Camarão <wagner.montalvao@...> escreveu:

                                 

                                Fala pessoal,

                                Estou criando um mecanismo que vai percorrer um código html e localizar todos os links (atributos href) das tags que os possuem (<a> e <area>).

                                O html já virá pronto como um stringão de outro lugar. Cada href encontrado será substituído por um novo link gerado pelo sistema para interceptar os clicks nesses links originais do html. O objetivo é para gerar relatórios de quais foram os links mais clicados em cada html.

                                Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles a navegação é tranquila, porém tem um problema: se não for um xhtml w3c válido, dá exception no parse do xhtml para o dom (e provavelmente o cliente mandará uns códigos inválidos gerados por designer tools).

                                Depois experimentei sofrer um pouco fazendo essa busca manualmente com Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro de reinvenção de roda ficou forte...

                                Enfim, gostaria de saber se alguém conhece e pode me indicar algum utilitário para isso. Algo como o jQuery, porém no lado servidor...

                                Abraços e Obrigado,

                                Wagner Montalvão Camarão






                                --
                                ------------------------------------------
                                  Felipe Gaúcho
                                  10+ Java Programmer
                                  CEJUG Senior Advisor



                              • Wagner Montalvão Camarão
                                Fala Carlos, Valeu o acréscimo, mas com o tal do reLAXed parser foi mais relax. rs. Valeu Victor! Salvou um tempão. Vou colar o código logo abaixo. Em
                                Message 15 of 16 , Feb 19, 2010
                                • 0 Attachment
                                  Fala Carlos,

                                  Valeu o acréscimo, mas com o tal do reLAXed parser foi mais relax. rs. Valeu Victor! Salvou um tempão.

                                  Vou colar o código logo abaixo. Em comparação ao anterior ficou bem menor e o principal: fácil de manter.

                                  Para quem for aproveitar, é só usar o htmlparser.jar e o htmllexer.jar, ambos da versão atual para download.

                                  Abs e bom fds!

                                  Wagner Montalvão Camarão



                                  import org.htmlparser.Node;
                                  import org.htmlparser.Parser;
                                  import org.htmlparser.tags.LinkTag;
                                  import org.htmlparser.util.NodeIterator;
                                  import org.htmlparser.util.NodeList;
                                  import org.htmlparser.util.ParserException;

                                  public class Test {

                                  public static void main(String[] args) {
                                  try {
                                  Parser parser = new Parser(html());
                                  Node root = parser.elements().nextNode();
                                  it(root);
                                  System.out.println(root.toHtml());
                                  } catch (ParserException e) {
                                  e.printStackTrace();
                                  }
                                  }

                                  public static void it(Node node) throws ParserException {
                                  NodeList nodeList = node.getChildren();
                                  if (nodeList != null) {
                                  NodeIterator nodeIterator = nodeList.elements();
                                  if (nodeIterator != null) {
                                  while (nodeIterator.hasMoreNodes()) {
                                  Node n = nodeIterator.nextNode();
                                  if (n instanceof LinkTag) {
                                  LinkTag a = (LinkTag) n;
                                  a.setLink("http://gotit.net/click?link=" + a.extractLink());
                                  }
                                  it(n);
                                  }
                                  }
                                  }
                                  }

                                  public static String html() {
                                  StringBuilder sb = new StringBuilder();
                                  sb.append("<html>\n");
                                  sb.append("<head>\n");
                                  sb.append("<title></title>\n");
                                  sb.append("</head>\n");
                                  sb.append("<body>\n");
                                  sb.append("<div>\n");
                                  sb.append("<img src=\"404.gif\" >\n");
                                  sb.append("<br />\n");
                                  sb.append("<a href = \"http://www.google.com\"></a>\n");
                                  sb.append("<br >\n");
                                  sb.append("<a href=\" http://www.123456.org  \"></a>\n");
                                  sb.append("</div>\n");
                                  sb.append("</body>\n");
                                  sb.append("</html>\n");
                                  return sb.toString();
                                  }

                                  }






                                  2010/2/18 Carlos Angelim <cgangelim@...>
                                   

                                  Opa,

                                  Correndo um pouco contra a maré: se é apenas atrás de href que vc está, não vejo mal em usar regex.
                                  Há três cenários possíveis: hrefs sem aspas, hrefs com aspas simples e hrefs com aspas duplas - hrefs iniciados com um tipo de aspas e terminados com outro ficam à sua escolha :D

                                  Num primeiro momento eu geraria os três regex (usaria espaço ou '>' para determinar o término de um href sem aspas) num array e passaria o documento por cada um deles, armazenando o resultado num Set. Embora regex costume ter custo alto, a simplicidade destes três casos deve permitir um parsing satisfatoriamente rápido. E uma vez criados e validados, será possível otimizá-los e/ou mesclá-los.

                                  Simplesmente não me preocuparia o fato de estarem dentro de algum elemento html; aliás, para quê se preocupar com o fato da string ser um documento html?

                                  []s
                                  Carlos



                                  2010/2/18 Wagner Montalvão Camarão <wagner.montalvao@...>
                                   

                                  Pois é Felipe, gostaria muito eu de só parsear os xhtml válidos, porém virão inputados pelos usuários htmls 4 inválidos e poluídos por ferramentas visuais dessas que abrem e não fecham tags. Mas valeu de qualquer forma.


                                  Abs

                                  Wagner Montalvão Camarão


                                  2010/2/18 Felipe Gaúcho <fgaucho@...>

                                   

                                  se o html for pequeno (menos de 2 ou 3 mil linhas), compile o schema do XHTML e carregue os dados na memória.. tu ganha validação grátis.. e, na minha opinião, tu não deve perder tempo parseando html inválido.......... (mas não sei dos teus requisitos)...

                                  2010/2/18 Wagner Montalvão Camarão <wagner.montalvao@...>

                                   

                                  Victor, Marcius e Valter, obrigado² por todos os links e dicas! Vão ajudar muito aqui.


                                  Abraços

                                  Wagner Montalvão Camarão


                                  2010/2/18 Valter Lobo - Imaginary Software System <valter.imaginary@...>

                                   


                                  Um serie de Html parsers :
                                  http://java-source.net/open-source/html-parsers

                                  Eu ja utilizei este :
                                  http://jtidy.sourceforge.net/




                                  Em 17 de fevereiro de 2010 15:36, Wagner Montalvão Camarão <wagner.montalvao@...> escreveu:

                                   

                                  Fala pessoal,

                                  Estou criando um mecanismo que vai percorrer um código html e localizar todos os links (atributos href) das tags que os possuem (<a> e <area>).

                                  O html já virá pronto como um stringão de outro lugar. Cada href encontrado será substituído por um novo link gerado pelo sistema para interceptar os clicks nesses links originais do html. O objetivo é para gerar relatórios de quais foram os links mais clicados em cada html.

                                  Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles a navegação é tranquila, porém tem um problema: se não for um xhtml w3c válido, dá exception no parse do xhtml para o dom (e provavelmente o cliente mandará uns códigos inválidos gerados por designer tools).

                                  Depois experimentei sofrer um pouco fazendo essa busca manualmente com Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro de reinvenção de roda ficou forte...

                                  Enfim, gostaria de saber se alguém conhece e pode me indicar algum utilitário para isso. Algo como o jQuery, porém no lado servidor...

                                  Abraços e Obrigado,

                                  Wagner Montalvão Camarão






                                  --
                                  ------------------------------------------
                                    Felipe Gaúcho
                                    10+ Java Programmer
                                    CEJUG Senior Advisor




                                • Allan Maio
                                  Pensando um pouco out of the box e pegando o que vc escreveu: O objetivo é para gerar relatórios de quais foram os links mais clicados em cada html.
                                  Message 16 of 16 , Mar 2, 2010
                                  • 0 Attachment
                                    Pensando um pouco "out of the box" e pegando o que vc escreveu:
                                    "O objetivo é para gerar relatórios de quais foram os links mais clicados em cada html."

                                    Sugiro utilizar o AWStats ou o Google Analytics para este serviço de monitoração de acessos.


                                    Allan Maio
                                    MSN: allanmaio @ gmail.com
                                    Skype: allanmaio
                                    Linux User #423670 - http://counter.li.org/


                                    2010/2/19 Wagner Montalvão Camarão <wagner.montalvao@...>
                                     

                                    Fala Carlos,

                                    Valeu o acréscimo, mas com o tal do reLAXed parser foi mais relax. rs. Valeu Victor! Salvou um tempão.

                                    Vou colar o código logo abaixo. Em comparação ao anterior ficou bem menor e o principal: fácil de manter.

                                    Para quem for aproveitar, é só usar o htmlparser.jar e o htmllexer.jar, ambos da versão atual para download.

                                    Abs e bom fds!

                                    Wagner Montalvão Camarão



                                    import org.htmlparser.Node;
                                    import org.htmlparser.Parser;
                                    import org.htmlparser.tags.LinkTag;
                                    import org.htmlparser.util.NodeIterator;
                                    import org.htmlparser.util.NodeList;
                                    import org.htmlparser.util.ParserException;

                                    public class Test {

                                    public static void main(String[] args) {
                                    try {
                                    Parser parser = new Parser(html());
                                    Node root = parser.elements().nextNode();
                                    it(root);
                                    System.out.println(root.toHtml());
                                    } catch (ParserException e) {
                                    e.printStackTrace();
                                    }
                                    }

                                    public static void it(Node node) throws ParserException {
                                    NodeList nodeList = node.getChildren();
                                    if (nodeList != null) {
                                    NodeIterator nodeIterator = nodeList.elements();
                                    if (nodeIterator != null) {
                                    while (nodeIterator.hasMoreNodes()) {
                                    Node n = nodeIterator.nextNode();
                                    if (n instanceof LinkTag) {
                                    LinkTag a = (LinkTag) n;
                                    a.setLink("http://gotit.net/click?link=" + a.extractLink());
                                    }
                                    it(n);
                                    }
                                    }
                                    }
                                    }

                                    public static String html() {
                                    StringBuilder sb = new StringBuilder();
                                    sb.append("<html>\n");
                                    sb.append("<head>\n");
                                    sb.append("<title></title>\n");
                                    sb.append("</head>\n");
                                    sb.append("<body>\n");
                                    sb.append("<div>\n");
                                    sb.append("<img src=\"404.gif\" >\n");
                                    sb.append("<br />\n");
                                    sb.append("<a href = \"http://www.google.com\"></a>\n");
                                    sb.append("<br >\n");
                                    sb.append("<a href=\" http://www.123456.org  \"></a>\n");
                                    sb.append("</div>\n");
                                    sb.append("</body>\n");
                                    sb.append("</html>\n");
                                    return sb.toString();
                                    }

                                    }






                                    2010/2/18 Carlos Angelim <cgangelim@...>

                                     

                                    Opa,

                                    Correndo um pouco contra a maré: se é apenas atrás de href que vc está, não vejo mal em usar regex.
                                    Há três cenários possíveis: hrefs sem aspas, hrefs com aspas simples e hrefs com aspas duplas - hrefs iniciados com um tipo de aspas e terminados com outro ficam à sua escolha :D

                                    Num primeiro momento eu geraria os três regex (usaria espaço ou '>' para determinar o término de um href sem aspas) num array e passaria o documento por cada um deles, armazenando o resultado num Set. Embora regex costume ter custo alto, a simplicidade destes três casos deve permitir um parsing satisfatoriamente rápido. E uma vez criados e validados, será possível otimizá-los e/ou mesclá-los.

                                    Simplesmente não me preocuparia o fato de estarem dentro de algum elemento html; aliás, para quê se preocupar com o fato da string ser um documento html?

                                    []s
                                    Carlos



                                    2010/2/18 Wagner Montalvão Camarão <wagner.montalvao@...>
                                     

                                    Pois é Felipe, gostaria muito eu de só parsear os xhtml válidos, porém virão inputados pelos usuários htmls 4 inválidos e poluídos por ferramentas visuais dessas que abrem e não fecham tags. Mas valeu de qualquer forma.


                                    Abs

                                    Wagner Montalvão Camarão


                                    2010/2/18 Felipe Gaúcho <fgaucho@...>

                                     

                                    se o html for pequeno (menos de 2 ou 3 mil linhas), compile o schema do XHTML e carregue os dados na memória.. tu ganha validação grátis.. e, na minha opinião, tu não deve perder tempo parseando html inválido.......... (mas não sei dos teus requisitos)...

                                    2010/2/18 Wagner Montalvão Camarão <wagner.montalvao@...>

                                     

                                    Victor, Marcius e Valter, obrigado² por todos os links e dicas! Vão ajudar muito aqui.


                                    Abraços

                                    Wagner Montalvão Camarão


                                    2010/2/18 Valter Lobo - Imaginary Software System <valter.imaginary@...>

                                     


                                    Um serie de Html parsers :
                                    http://java-source.net/open-source/html-parsers

                                    Eu ja utilizei este :
                                    http://jtidy.sourceforge.net/




                                    Em 17 de fevereiro de 2010 15:36, Wagner Montalvão Camarão <wagner.montalvao@...> escreveu:

                                     

                                    Fala pessoal,

                                    Estou criando um mecanismo que vai percorrer um código html e localizar todos os links (atributos href) das tags que os possuem (<a> e <area>).

                                    O html já virá pronto como um stringão de outro lugar. Cada href encontrado será substituído por um novo link gerado pelo sistema para interceptar os clicks nesses links originais do html. O objetivo é para gerar relatórios de quais foram os links mais clicados em cada html.

                                    Comecei tentando navegar usando javax.xml.parsers e org.w3c.dom. Por eles a navegação é tranquila, porém tem um problema: se não for um xhtml w3c válido, dá exception no parse do xhtml para o dom (e provavelmente o cliente mandará uns códigos inválidos gerados por designer tools).

                                    Depois experimentei sofrer um pouco fazendo essa busca manualmente com Strings. "Consegui". Quer dizer, até fazer uns testes variados e perceber que que não consegui. Teria ainda mais trabalho manual ali. Daí o cheiro de reinvenção de roda ficou forte...

                                    Enfim, gostaria de saber se alguém conhece e pode me indicar algum utilitário para isso. Algo como o jQuery, porém no lado servidor...

                                    Abraços e Obrigado,

                                    Wagner Montalvão Camarão






                                    --
                                    ------------------------------------------
                                      Felipe Gaúcho
                                      10+ Java Programmer
                                      CEJUG Senior Advisor





                                  Your message has been successfully submitted and would be delivered to recipients shortly.