Baixar conteúdo web em página do Writer Libreoffice

Preciso acessar conteúdo (texto e números) que estão numa série (cerca de 1700) de páginas web (de um mesmo site) individuais. O conteúdo de cada uma dessas páginas deve aparecer diretamente na página do editor de texto writer Openoffice, de forma que numa segunda etapa eu possa recolher do conjunto alguns dados específicos, nos dois casos, através de macro. Alguma sugestão? Tem que ser através de macro em Basic, pois manualmente eu demoraria 2 meses para fazer o trabalho, e então não valeria a pena implementá-lo.

Boa noite Valdir.
Cara, deixa eu ver se entendi direito…

Você tem o código html de um site inteiro e dentro desse código precisa encontrar uma cadeia específica de caracteres contendo letras e números certo?

A ideía é separar apenas esses caracteres do restante do código?

MMalyson: Numa primeira macro, eu quero baixar, por exemplo, uma notícia. Não é arquivo grande. Baixada essa notícia, a segunda macro vai extrair da notícia apenas o título da matéria e a data e hora da publicação.

Há alguns anos eu tinha essa primeira macro, a problemática, que funcionava bem, mas de repente não funcionou mais. A macro era assim:

**Sub ImportaPaginaWeb**

dim oDocument As Object
Dim sUrl As String, sFilter As String
Dim sOptions As String
Dim oSheets As Object, oSheet As Object
dim oCell as Object
dim paginaweb as Long

oDocument = ThisComponent
oSheets = oDocument.sheets
oSheet = oSheets(1)
paginaweb = 200000

sUrl = “http://www.capitalnews.com.br/conteudo.php?cid=” + paginaweb

sFilter = “Text – txt – csv (StarCalc)”

sOptions = “09,34,1,1,1/1/1/1/1/1/1/1”

REM ver: [Filter Options - Apache OpenOffice Wiki](https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options) ; 09 é o código ASCII decimal para separação por tabulação horizontal.

oSheet.link(sUrl, “”, sFilter, sOptions, com.sun.star.sheet.SheetLinkMode.VALUE)

oSheet = oSheets(1)

msgbox “término da sub-rotina”

**End Sub**

Por incrível que pareça, essa macro (tirei o while-wend) fornecia o texto completo da página web para a planilha 1, e em seguida a segunda macro procurava, dentro do texto da notícia, o título, data e hora, anotando numa linha da planilha 2.

Talvez isso não esteja mais funcionando por causa da versão mais atual da planilha Libreoffice, e os parâmetros mudaram, sendo necessária uma nova abordagem.

Valdir.

Acho que o problema aqui é o aumento da complexidade do site com o tempo. O macro como está teve problemas aqui (The link could not be updated ou Não foi possível atualizar o vínculo), mas quando coloquei um site mais simples (sem muitas imagens, scripts, etc.), ele funcionou.

Recomendaria usar uma abordagem usando o shell (curl e wget podem baixar os sites, e grep, awk permitem manipular o texto, por exemplo – há também ferramentas especializadas em html como o htmlq e pup que são mais eficientes que as acima que são de propósito geral).

Pode até tentar uma abordagem híbbrida, usar o terminal ou shell para baixar os sites e abrir como CSV no LibreOffice para rodar a segunda macro.

1 curtida

Capezotte:

Com a sua dica, revisei o link que estava usando, e que fora modificado pelo site. E funcionou. Mas como também mudaram os scripts, vou ter que adaptar a segunda macro. E vou aplicar as suas sugestões alternativas, muito interessantes. Creio que agora vai dar certo, e considero o caso resolvido. Obrigado.

Para leitores eventuais do tópico, esclareço que o texto importado vem como código-fonte.

Obrigado também ao Malyson, pela atenção.

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.