![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| 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 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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? |
|
||||
|
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 |
|
|||||
|
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 |
|
||||
|
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 é. |
|
||||
|
Citação:
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 |
|
||||
|
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 |
|
||||
|
Citação:
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:
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 |
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|