AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1848322
Accepted
CuriosityCalls
CuriosityCalls
Asked: 2024-07-07 11:03:30 +0800 CST2024-07-07 11:03:30 +0800 CST 2024-07-07 11:03:30 +0800 CST

Como posso salvar uma página do Reddit para visualização offline em formato HTML DEPOIS que o usuário interagiu manualmente com a página que possui uma enorme seção de comentários?

  • 772

Estou tentando salvar uma página do Reddit para visualização OFFLINE como um único arquivo HTML, EXATAMENTE como é exibido no navegador e depois de já ter expandido manualmente alguns tópicos de comentários. Este problema é um subconjunto da questão geral de como salvar todo o DOM da web em seu estado atual, preservando os efeitos e o layout CSS. Por exemplo, aqui estão uma infinidade de postagens na plataforma Stack Exchange que fazem esta pergunta geral:

  • Como posso despejar todo o Web DOM em seu estado atual no Chrome?
  • É possível despejar o DOM com JavaScript e preservar os efeitos e o layout CSS?
  • Como salvar uma página da web em seu estado atual com imagens no Chrome?
  • Salve a página da web atual em um único formato de arquivo HTML
  • Posso capturar e salvar o estado atual de uma página da web usando javascript?
  • Como mostrar/salvar o HTML incluindo imagens conforme mostrado atualmente pelo navegador da web?
  • Como obter uma cópia local perfeita de uma página da web?
  • Como salvar um aplicativo da web em HTML estático?
  • Salvar site contendo javascript depois de interpretado
  • Como faço para salvar uma página da Web sem recarregar ou executar novamente o JS?
  • Como faço o download completo de uma página da web, preservando sua funcionalidade? [duplicado]

Quase todas as respostas são de uma das seguintes formas:

  • Clique com o botão direito e selecione Save as...e salve como Web Page, Complete (*.htm;*.html)ou Web page, Single File (*.mhtml).

  • Abra o Chrome DevTools e copie todo o HTML ( Copy outerHTML) da Elementsguia.

  • Você nunca será capaz de salvar um arquivo que se pareça exatamente com a versão ativa do site porque muitos links são links "relativos" e muitos links para scripts externos podem estar contidos em arquivos CSS e JS.

  • Use uma ferramenta como HTTrack. (Até onde eu sei, no entanto, o HTTrack não suporta salvar tudo em um único arquivo HTML.)

  • Salvar uma página da web como um único arquivo HTML exatamente como aparece para o usuário durante uma renderização ao vivo é simplesmente impossível para muitos sites.

  • Use uma extensão de navegador, como “ Single File ” (a página GitHub do desenvolvedor está aqui ), “ Save Page WE ” ou “ WebScrapBook ”.

  • Experimente a extensão “ WebRecorder ” do Chrome .

Várias dessas respostas realmente alcançam algum nível de salvamento do layout da página da Web como um único arquivo HTML, exatamente como aparece quando renderizado ao vivo, mas há uma ENORME desvantagem: elas não salvam o arquivo HTML de uma maneira que possibilite o usuário visualizar a página OFFLINE . A parte de visualização offline é essencialmente o que procuro e é o cerne do meu problema.

Por exemplo, abrir o Chrome DevTools e salvar tudo outerHTMLna Elementsguia realmente permite que o usuário salve a página exatamente como ela aparece quando renderizada ao vivo, mas assim que o usuário tenta abrir o arquivo HTML no modo offline, nenhum dos recursos externos os scripts são capazes de carregar e, portanto, toda a seção de comentários da página do Reddit literalmente nem é exibida. Fiz uma inspeção manual no próprio arquivo HTML e descobri que os próprios comentários estão realmente presentes no arquivo HTML, mas simplesmente não são renderizados quando o usuário carrega o arquivo, pois dependem de scripts externos para ditar como para exibir ao usuário.

Uma solução (quase...)

Na minha experiência, descobri que usar a extensão do Chrome SingleFile realiza exatamente a tarefa que procuro (quase), e é melhor. Ele é capaz de salvar a página exatamente como parece ao usuário durante uma renderização ao vivo (mesmo quando visualizada offline), e descobri que é melhor do que as extensões "Salvar página WE" e "WebScrapBook". SingleFile lida perfeitamente com muitos sites, mas falha miseravelmente ao tentar salvar uma página do Reddit que possui um enorme tópico de comentários . Nesses casos, a extensão consome muita memória e simplesmente trava a guia ( Out of Memoryocorre um erro). A parte triste é que a extensão funciona bem em postagens do Reddit que têm uma seção de comentários muito pequena, mas de forma um tanto zombeteira, na maioria das vezes quando eu quero salvar uma postagem do Reddit, a postagem do Reddit tem uma seção de comentários muito grande e, portanto, o A extensão SingleFile não consegue lidar com isso.

O desenvolvedor do SingleFile tem uma variante de linha de comando da ferramenta em sua página do GitHub , mas isso simplesmente inicia um navegador sem cabeça e baixa o URL solicitado. Essa abordagem é inútil no meu caso, pois quero salvar a página do Reddit com as modificações que fiz pessoalmente e manualmente (ou seja, com os tópicos de comentários desejados expandidos manualmente). Além disso, tive o mesmo problema de falta de memória com essa abordagem.

Solução alternativa suja

Descobri que uma solução super suja para o meu problema é simplesmente salvar a página no formato PDF, mas não quero um formato PDF. Eu quero um formato HTML.

Alguma ideia sobre como salvar uma página do Reddit para visualização offline, mesmo em casos em que a seção de comentários é bastante grande?

browser
  • 2 2 respostas
  • 129 Views

2 respostas

  • Voted
  1. Best Answer
    Danny Lin
    2024-07-21T18:05:11+08:002024-07-21T18:05:11+08:00

    DR Use WebScrapBook ≥ 2.12.0 com opções: NOT Style images: Save used, NOT Fonts: Save used, NOT Scripts: Save/Link. (Isenção de responsabilidade: sou o desenvolvedor do WebScrapBook)

    A causa raiz do consumo excessivo de memória/volume durante uma captura de SingleFile ou muitas outras ferramentas semelhantes é que as páginas do Reddit usam amplamente shadow DOMs com folhas de estilo construídas compartilhadas, que são técnicas modernas baseadas em script, e o conteúdo relacionado não pode ser expresso diretamente por HTML.

    Veja o exemplo recente que fiz com WebScrapBook 2.12.0 no Chrome 126/Firefox 129 para a página fornecida por OP , que foi rolada para baixo e teve "Ver mais comentários" clicado 20 vezes antes de invocar a captura:

    A página salva tem 79,1 MB e contém 1.987 comentários, cada um com cerca de 29 shadow DOMs, cada um dos quais faz referência a várias folhas de estilo construídas compartilhadas. Em particular, cerca de 6 dos shadow DOMs fazem referência a grandes folhas de estilo construídas compartilhadas que têm cerca de 200 KB.

    A maneira como SingleFiles armazena uma folha de estilo construída é gerando um elemento STYLE correspondente no documento vinculado ou na raiz sombra. Como resultado, uma folha de estilo construída referenciada por vários shadow DOMs é duplicada continuamente.

    Nesse caso, o volume estimado da grande folha de estilo construída duplicada nesta página é 1987 * 6 * 200 ≈ 2,3 GB! Isso ainda não inclui o conteúdo HTML e outras folhas de estilo menores! É por isso que um problema de “falta de memória” pode ser facilmente desencadeado.

    O WebScrapBook 2.12.0 reformulou a estratégia de lidar com folhas de estilo construídas para que elas não se dupliquem mais entre cada shadow DOMs referenciado.

    No entanto, certos cálculos durante a captura podem ser complicados. Para WebScrapBook é Style images: Save usede Fonts: Save used(pode haver recursos/opções semelhantes para SingleFile), que precisam verificar muitas regras CSS em cada shadow DOM de referência para ter certeza se uma imagem/fonte é realmente usada ou não. Até que seja finalmente integrado ao arquivo de página final, mapeamentos relacionais intermediários são gerados durante cada execução e consomem cada vez mais memória. Isso também pode esgotar a CPU/memória durante uma captura e, portanto, tais opções devem ser evitadas.

    • 2
  2. JayCravens
    2024-07-09T00:05:21+08:002024-07-09T00:05:21+08:00

    Eles estão usando o típico "carregador lento".
    Então, você tem que carregá-lo para salvá-lo.
    Role e carregue, até não ter mais nada para carregar. Não role para cima.

    Então você pode:

    • Ctrl+ A> Clique com o botão direito na seleção (no destaque azul)
    • "Ver fonte de seleção" . Isso vai demorar um pouco, vá tomar um café.
    • Ctrl+ A> Copiar > Colar (em um bloco de notas)

    Salvar como my-saved-post.html.

    Abra com seu navegador.
    Quão quebrado fica o layout sem carregar todos os componentes externos?
    Geralmente não é tão ruim. Agora você terá todas as postagens.

    Limpe o HTML o quanto desejar. Agora você tem em .htmlformato


    página da web completa

    Você terá tudo, menos o conteúdo do carregador.


    Eu estava olhando aquela imagem e percebi que é um .htmlarquivo de 2,2mb?! Você pode ter o conteúdo dos carregadores lentos. Você simplesmente não tem nenhuma funcionalidade do lado do servidor.

    Você deve tentar executar a página com Five-Server . Depois de instalado, renomeie data.htmlpara index.html. Em seguida, abra um terminal nesse diretório e digite: five-server.


    Posso ter uma ideia para o seu arquivo PDF de solução alternativa suja. Acho que o repositório do Ubuntu tem isso. O link abaixo mostra as versões Fedora e FreeBSD. Você também pode obter a fonte do Poppler, se preferir.

    pdftohtml versão 24.02.0
    Copyright 2005-2024 The Poppler Developers - http://poppler.freedesktop.org

    pdftohtml 'input.pdf' 'output.html' -s -nomerge -dataurls -noframes
    

    Faz um trabalho razoável. Eu testei em um arquivo PDF textual. Aqui está a saída:pdf x html

    • 0

relate perguntas

  • O Tor envia o nome de domínio ou IP do site para os relés?

  • Como são chamados os ícones de tabulação e como posso extrair este para fazer uma pesquisa de imagem reversa?

  • Windows Server 2016 - É possível instalar diferentes navegadores da web?

  • A atualização do WebBrowser não atualiza o nível de zoom do PDF

  • Como adaptar automaticamente o nível de zoom de um site a um tamanho de texto fixo?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve