The UNIX and Linux Forums  

Go Back   O UNIX e Linux Forum > Top Fóruns > UNIX para Dummies Perguntas & Respostas
.
google unix.com



UNIX para Dummies Perguntas & Respostas Se não tiver certeza de onde se pode postar uma pergunta Unix ou Linux, postá-lo aqui. Todos os UNIX e Linux novatos bem vindos!

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Para quebrar dados fora de HTML phip Programação Shell Script e 1 05-20-2008 04:23
Convertendo HTML dados em uma planilha garric Programação Shell Script e 4 04-22-2008 11:00
Como faço para extrair o texto só a partir de arquivo html sem tag HTML los111 UNIX para Dummies Perguntas & Respostas 4 11-28-2007 04:40
html coverting dados em texto em 'c' phani_sree Alto Nível de programação 3 10-18-2007 11:06
Convertendo tabelas de linha de dados em colunas de tabelas justthisguy Programação Shell Script e 7 07-16-2007 05:42

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 03-19-2008
Streetrcr Streetrcr is offline
Usuário
  
 

Join Date: Mar 2008
Lugares: 10
extrair dados de tabelas HTML

oi

Preciso usar unix para extrair dados de várias linhas de uma tabela no código HTML. Eu sei que as linhas dentro de uma tabela tem as tags <tr> </ tr> e por isso pensei que o meu primeiro passo deve ser a de suprimir todos os outros código html que não é contido dentro dessas tags. Eu poderia, então, usar este método remover tudo novamente, mas não em <td> </ td> tags. mas a grande questão é saber como posso fazer isso? Acho que preciso sed mas de momento é apenas confundir-me demasiado qualquer ajuda?
  #2 (permalink)  
Old 03-19-2008
Bakunin bakunin is offline Forum Staff  
Bughunter Extraordinaire
  
 

Join Date: May 2005
Localização: Na esquerda byte de / dev / kmem
Posts: 1.641
Em princípio, você está certo. O seguinte script irá extrair tudo entre um "<tr>" e "</ tr>" tag. Irá assumir que não existem vários "<tr> - </ tr>"-pares em uma única linha e as marcas próprias são todos em minúsculas (sem "<TR>").

O resultado pode não ser o que você precisa, no entanto, assim que você pode considerar o que nos deu uma amostra do que você tem e aquilo que você precisa para obter a partir dele. Isto ajudar-nos a ajudá-lo melhor.


Código:
sed 's/.*<tr>//;s/<\/tr>.*//' /path/to/your/file

Espero que isto ajude.

Bakunin
  #3 (permalink)  
Old 03-19-2008
drl's Avatar
DRL drl is offline Forum Advisor  
Usuário
  
 

Join Date: Apr 2007
Localização: Saint Paul, MN E.U.A. / BSD, CentOS, Debian, Mac OS X, Solaris
Lugares: 717
Oi.

Ver HTML tabela para CSV para uma outra abordagem utilizando lynx-dump.

Em geral, as ligações de fios são semelhantes aos seus postado no fundo da discussão ... cheers, DRL
  #4 (permalink)  
Old 03-19-2008
Streetrcr Streetrcr is offline
Usuário
  
 

Join Date: Mar 2008
Lugares: 10
graças Bakunin que é realmente útil. i cant postar uma amostra da página html por razões diversas. o único problema com a sua solução é que a maioria das tags são <tr> em várias linhas na minha página html. ou seja, a etiqueta pode ser aberto na linha 7 e, em seguida, encerrada em linha 20. daí é que é possível com sed para apagar tudo em uma linha (incluindo a linha), mas quando chega a parar um <tr> tag e começar de novo quando se chega a um </ tr>? alternativamente existe uma maneira de fazer sed Consideramos que toda a página html está em uma única linha?

como não estou familiarizado com as capacidades do sed, Torna difícil para mim saber qual a melhor forma de concluir esta tarefa é.
  #5 (permalink)  
Old 03-19-2008
ShawnMilo ShawnMilo is offline
Usuário
  
 

Join Date: Jun 2006
Lugares: 252
Citação:
Originally Posted by Streetrcr View Post
graças Bakunin que é realmente útil. i cant postar uma amostra da página html por razões diversas. o único problema com a sua solução é que a maioria das tags são <tr> em várias linhas na minha página html. ou seja, a etiqueta pode ser aberto na linha 7 e, em seguida, encerrada em linha 20. daí é que é possível com sed para apagar tudo em uma linha (incluindo a linha), mas quando chega a parar um <tr> tag e começar de novo quando se chega a um </ tr>? alternativamente existe uma maneira de fazer sed Consideramos que toda a página html está em uma única linha?

como não estou familiarizado com as capacidades do sed, Torna difícil para mim saber qual a melhor forma de concluir esta tarefa é.
Não há nenhuma razão você não pode zombar de uma página HTML que parece com o que você está trabalhando com um, mas que não contém quaisquer informações sensíveis. Ninguém está interessado em jogar dardos em um quarto escuro.

Se você postar alguma coisa, alguém irá postar código. Caso contrário, você vai ter que fazê-lo manualmente. Tente algo como substituir todas newlines no arquivo com espaços, dividir o arquivo antes de cada <ou depois de cada> e, de lá ir. Se você pode ter um <ou> dentro dos dados, então você vai fazer um pouco de trabalho extra. Esse é o melhor que posso fazer por você no momento.

ShawnMilo
  #6 (permalink)  
Old 03-20-2008
Streetrcr Streetrcr is offline
Usuário
  
 

Join Date: Mar 2008
Lugares: 10
tentando responder à minha própria pergunta aqui, mas ainda lutando im doesnt se este trabalho, então vou escarnecessem até um exemplo, eu pensei que a minha descrição pode ter sido bom o suficiente withough ter que perder tempo fazendo um exemplo tabela.

Encontrei neste site Sed - An Introduction and Tutorial que você pode criar gamas por padrões. o exemplo de código é:


Código:
sed '/start/,/stop/ s/#.*//'

Eu tentei fazer o meu <tr> iniciar e </ tr> minha parada, mas eu só mantidos recebendo erros. Para além disso, teria que NOT (!) deste modo, em vez de apagar as etiquetas em tudo, ele apaga tudo fora das tags.
por favor alguem poderia me ajudar a obter esta sed comando de trabalho?

obrigado

Última edição por Streetrcr; em 03/20/2008 04:05.. Motivo: código tags
  #7 (permalink)  
Old 03-20-2008
Bakunin bakunin is offline Forum Staff  
Bughunter Extraordinaire
  
 

Join Date: May 2005
Localização: Na esquerda byte de / dev / kmem
Posts: 1.641
Citação:
o único problema com a sua solução é que a maioria das tags são <tr> em várias linhas na minha página html. ou seja, a etiqueta pode ser aberto na linha 7 e, em seguida, encerrada em linha 20.
Bem, eu disse-lhe que - na ausência de qualquer exemplo - Eu tive que fazer algumas suposições. Aqui está uma nova versão que irá funcionar em etiquetas que vão ao longo de várias linhas. Irá ainda não pegar o caso de vários "<tr> ...</ tr>" pares em uma linha, no entanto.


Código:
sed -n '/<tr>/,/<\/tr> {
           s/.*<tr>//
           s/<\/tr>.*//
           p
           }' /path/to/your/file

Como isso funciona: o "-n" cláusula vai parar sed impressão a partir de cada linha que tiver lido, por isso, se você excluir o script seria imprimir nada. Esta é a (implicitamente) deite fora todas as linhas que não estão no intervalo especificado.

Tudo entre as chavetas é executada apenas quando dentro do intervalo especificado na linha 1. Como você pode ver o último comando dentro das chavetas é um "p", que irá imprimir tudo dentro deste intervalo. Se você apagar a dois "s /...."- comandos seria algo imprimir esta:


Código:
something....<tr> content of the tr-tag
some more content
even more content</tr> something else....

Como você pode ver as partes em negrito devem ser eliminadas, pois não são parte do que você quiser. Os dois "s /..."- comandos (s \u003d substituto) cuidar do que junto com as marcas próprias. Por último, a p (rint)-comando de realizações o resultado de todas as guarnições.

Só mais uma palavra, no entanto: Você tem uma segunda resposta de mim porque eu appreciated que você estava fazendo uma verdadeira investigação sobre o seu próprio. Você quase perdido essa resposta porque disto:

Citação:
[...] withough ter de perder tempo fazendo um exemplo tabela
Você pode perceber que tenho "tempo perdido", não só a escrever um script, mas mesmo desperdiçado mais tempo a explicar como isso funciona, na esperança de não apenas resolver o problema na mão, mas reforçando a sua compreensão, ao mesmo tempo. No topo do que eu "perdido mais algum tempo" para escrever um script em meu primeiro post que ninguém vai precisar porque foi baseada em suposições defeituosas. Pressupostos que talvez não tenha sido deficiente em todos eu teria sido capaz de trabalhar a partir de um exemplo criado por "perder tempo".

Estou até agora "desperdício de mais algum tempo" para explicar a você por que você pode por vezes obter nenhuma resposta em todos ou alguns resposta você não pode usar. Ir figura.

Espero que isto ajude.

Bakunin
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 01:27.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0